{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "2689c518",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 11:39:06] {1680} INFO - task = classification\n",
      "[flaml.automl.logger: 05-15 11:39:06] {1691} INFO - Evaluation method: cv\n",
      "[flaml.automl.logger: 05-15 11:39:06] {1789} INFO - Minimizing error metric: 1-accuracy\n",
      "[flaml.automl.logger: 05-15 11:39:06] {1901} INFO - List of ML learners in AutoML Run: ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2219} INFO - iteration 0, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2345} INFO - Estimated sufficient time budget=470s. Estimated necessary time budget=0s.\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2219} INFO - iteration 1, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2392} INFO -  at 0.2s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2219} INFO - iteration 2, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2392} INFO -  at 0.2s,\testimator xgboost's best error=0.1591,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2219} INFO - iteration 3, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2392} INFO -  at 0.4s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2219} INFO - iteration 4, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2392} INFO -  at 0.4s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2219} INFO - iteration 5, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2392} INFO -  at 0.6s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:06] {2219} INFO - iteration 6, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2392} INFO -  at 0.7s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2219} INFO - iteration 7, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2392} INFO -  at 0.8s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2219} INFO - iteration 8, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2392} INFO -  at 0.9s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2219} INFO - iteration 9, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2392} INFO -  at 1.0s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2219} INFO - iteration 10, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2392} INFO -  at 1.1s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2219} INFO - iteration 11, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2392} INFO -  at 1.2s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2219} INFO - iteration 12, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2392} INFO -  at 1.3s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2219} INFO - iteration 13, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2392} INFO -  at 1.4s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:07] {2219} INFO - iteration 14, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 1.7s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 15, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 1.9s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 16, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 2.0s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 17, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 2.1s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 18, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 2.1s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 19, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 2.2s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 20, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 2.4s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 21, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 2.5s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 22, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2392} INFO -  at 2.6s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:08] {2219} INFO - iteration 23, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 2.6s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 24, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 2.8s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 25, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 2.9s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 26, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 3.0s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 27, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 3.1s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 28, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 3.2s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 29, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 3.4s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 30, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 3.5s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 31, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 3.5s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 32, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2392} INFO -  at 3.6s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:09] {2219} INFO - iteration 33, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2392} INFO -  at 3.7s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 11:39:10] {2219} INFO - iteration 34, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2392} INFO -  at 3.8s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2219} INFO - iteration 35, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2392} INFO -  at 3.9s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2219} INFO - iteration 36, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2392} INFO -  at 4.0s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2219} INFO - iteration 37, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2392} INFO -  at 4.2s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2219} INFO - iteration 38, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2392} INFO -  at 4.3s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2219} INFO - iteration 39, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2392} INFO -  at 4.4s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2219} INFO - iteration 40, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2392} INFO -  at 4.5s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:10] {2219} INFO - iteration 41, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 4.6s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 42, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 4.7s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 43, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 4.8s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 44, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 4.9s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 45, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 5.0s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 46, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 5.1s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 47, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 5.2s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 48, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 5.3s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 49, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2392} INFO -  at 5.6s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:11] {2219} INFO - iteration 50, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 5.8s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 51, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 5.8s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 52, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 5.8s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 53, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 5.9s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 54, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 5.9s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 55, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 6.0s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 56, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 6.1s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 57, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 6.1s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 58, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 6.3s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 59, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 6.3s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 60, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 6.4s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 61, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 6.5s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 62, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2392} INFO -  at 6.6s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:12] {2219} INFO - iteration 63, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2392} INFO -  at 6.7s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2219} INFO - iteration 64, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2392} INFO -  at 6.7s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2219} INFO - iteration 65, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2392} INFO -  at 6.9s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2219} INFO - iteration 66, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2392} INFO -  at 7.0s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2219} INFO - iteration 67, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2392} INFO -  at 7.1s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2219} INFO - iteration 68, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2392} INFO -  at 7.2s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2219} INFO - iteration 69, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2392} INFO -  at 7.3s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2219} INFO - iteration 70, current learner xgboost\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 11:39:13] {2392} INFO -  at 7.4s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:13] {2219} INFO - iteration 71, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 7.6s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 72, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 7.7s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 73, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 7.9s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 74, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 8.0s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 75, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 8.0s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 76, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 8.1s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 77, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 8.2s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 78, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 8.3s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 79, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 8.3s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 80, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2392} INFO -  at 8.5s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:14] {2219} INFO - iteration 81, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2392} INFO -  at 8.6s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2219} INFO - iteration 82, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2392} INFO -  at 8.7s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2219} INFO - iteration 83, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2392} INFO -  at 8.9s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2219} INFO - iteration 84, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2392} INFO -  at 9.0s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2219} INFO - iteration 85, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2392} INFO -  at 9.1s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2219} INFO - iteration 86, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2392} INFO -  at 9.2s,\testimator xgboost's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2219} INFO - iteration 87, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2392} INFO -  at 9.4s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2219} INFO - iteration 88, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2392} INFO -  at 9.5s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:15] {2219} INFO - iteration 89, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2392} INFO -  at 9.6s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2219} INFO - iteration 90, current learner rf\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2392} INFO -  at 9.8s,\testimator rf's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2219} INFO - iteration 91, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2392} INFO -  at 9.9s,\testimator extra_tree's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2219} INFO - iteration 92, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2392} INFO -  at 10.0s,\testimator lgbm's best error=0.1581,\tbest estimator lgbm's best error=0.1581\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2628} INFO - retrain lgbm for 0.0s\n",
      "[flaml.automl.logger: 05-15 11:39:16] {2631} INFO - retrained model: LGBMClassifier(learning_rate=0.09999999999999995, max_bin=255, n_estimators=1,\n",
      "               n_jobs=-1, num_leaves=4, reg_alpha=0.0009765625, reg_lambda=1.0,\n",
      "               verbose=-1)\n",
      "[flaml.automl.logger: 05-15 11:39:16] {1931} INFO - fit succeeded\n",
      "[flaml.automl.logger: 05-15 11:39:16] {1932} INFO - Time taken to find the best model: 0.07199954986572266\n",
      "最好的机器学习模型: lgbm\n",
      "最佳超参数配置: {'n_estimators': 4, 'num_leaves': 4, 'min_child_samples': 20, 'learning_rate': 0.09999999999999995, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}\n",
      "验证数据的最佳准确性: 0.8419\n",
      "accuracy = 0.8634538152610441\n"
     ]
    }
   ],
   "source": [
    "from flaml import AutoML\n",
    "from sklearn.model_selection import train_test_split\n",
    "import pandas as pd\n",
    "\n",
    "file_path = '训练数据.xlsx'\n",
    "data = pd.read_excel(file_path)\n",
    "\n",
    "\n",
    "X = data.iloc[:, :8]  \n",
    "y = data.iloc[:, 10]  \n",
    "\n",
    "# Splitting the dataset into training and testing sets (70% training, 30% testing)\n",
    "X_train, X_test, y_train, y_test1 = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "# Display the shape of the training and testing sets\n",
    "X_train.shape, X_test.shape, y_train.shape, y_test1.shape\n",
    "\n",
    "\n",
    "automl = AutoML()\n",
    "# 参数设定\n",
    "settings = {\n",
    "    \"time_budget\": 10,  # 总时间上限(单位秒)\n",
    "    \"metric\": 'accuracy',  \n",
    "    \"estimator_list\": ['lgbm', 'rf', 'xgboost', 'extra_tree'],   # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
    "    \"task\": 'classification', \n",
    "    \"seed\": 100,    # 随机种子\n",
    "}\n",
    "# 运行自动化机器学习\n",
    "automl.fit(X_train=X_train, y_train=y_train, **settings)\n",
    "# 输出结果\n",
    "print('最好的机器学习模型:', automl.best_estimator)\n",
    "print('最佳超参数配置:', automl.best_config)\n",
    "print('验证数据的最佳准确性: {0:.4g}'.format(1-automl.best_loss))\n",
    "# print('最佳运行的训练时间: {0:.4g} s'.format(automl.best_config_train_time))\n",
    "\n",
    "## 对测试集进行预估\n",
    "y_pred1 = automl.predict(X_test)\n",
    "from flaml.ml import sklearn_metric_loss_score\n",
    "print('accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred1, y_test1))\n",
    "differences1 = y_pred1 - y_test1\n",
    "# print('Predicted labels', y_pred)\n",
    "# print('True labels', y_test)\n",
    "y_pred_proba = automl.predict_proba(X_test)[:,1]  # 测试集概率\n",
    "y_proba = automl.predict_proba(X_test)  # 测试集标签+概率\n",
    "# print(y_proba)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "76d7aebd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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33DOOecAACoqKqTfDx06FAzDKK7pJkjAEmrc0iZIuSIId2Ao5irutmyBHrsPbSKcNW4ZswYipFyZQCgkWJCMUFsLPP888LWvAePHJ39fXy/EUNxxBzB5snCM43h0dPSiuDgPLKs0XYVCxst577334sILL0RDQwPGjRuH5557DnfddReYLII2du7cia6uLgwfPlxxvKenB0f6TXIrV67E17/+dTz//PO46qqrcMstt6C8vDzjezkBCSVCjVvcRUi5Igh3YMRy5ZaxhNwCM7ydS7I85oJb2t5AhJQrE2AYY655ADBtGjB8OLB9OzBlijIYneeBjz4CRowQzhPTsnOccP28vNxStc+ZMwezZ8/G2rVrcfXVV+PTTz/FX/7yl6yuxXEcysrKsHHjxqTvSvr9GR988EF85StfwVtvvYW3334bP/7xj7Fu3TrceOON2T+ETZBQItS4pU2QckUQ7oBirjTu43XlyiWLaGbgljFrIELKlc2wrJBu/eWXgXXrgIsvTmQL3LoVOHRIyBZo1X5XX//61/Hoo4+ioaEBV111FSZMmJD2N3l5eYjH44pjc+fORXNzM4LBICaLJjYNpk+fjunTp+P+++/Hl7/8ZTz33HO48cYbNa/pJkgoEXpQmyAIwiiu2efKq2OaZwvuPFR1zkHZAh2gslJQoE6eBJ59Fnj4YeHvqVPWp2G//fbb0dDQgP/93//F3Xffbeg3kydPxrFjx7B79260tLSgr68PV111FRYuXIgbbrgB7777Lmpra/HBBx/ggQcewI4dO9DT04N/+qd/wsaNG3H8+HG8//77+Pjjj1HZ/3CTJ09GV1cX3nvvPbS0tKC7u9u6h84CEkqEGresaJLliiDcgSf3uSLLlZtuZyl+ehavQZYrh6isBGbMAOrqgM5OoKgImDjROouVSHFxMW6++Wa89dZbuOGGGwz95uabb8af//xnXHHFFThz5owUq1VdXY0f/vCHuPvuu3H69GmMGTMGl156KUaPHo1AIIDW1lbceeedOHnyJEaMGIGbbroJDz30EABg0aJF+OY3v4lbb70Vra2t+PGPf+yqdOwklAg1pFwRBCHHUMyVy+QGKVeuup2l+OlZvAYpVw7CsomkFXbS1NSE22+/Xcryl478/Hz86U9/SjpeVFSExx9/HI8//rjm71588cWU133qqafw1FNPGSqD3ZBQItS4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jh07UFRUhCuvvBJ+vz+hZ7/nnnvw0EMP4cMPP4TH48HNN98sfvfiiy/ivvvuww9+8AN8+OGHmDZtmkxxAoAnn3wS99xzD37wgx/gyJEj+OEPf4h7770Xzz77LADg0UcfxejoKL773e8CAO6991709PSo7kMQBEGkCZ4gCIIgLObll1/mS0tL+by8PH7NmjX83XffzX/88ce6f/Piiy/yU6dOFd8//fTTPAD++PHj4mdf//rX+YKCAn54eFj87IorruC//vWvi+9ra2v5K6+8UnbvjRs38ldddZX4HgD/yiuv8DzP80899RR/9tln8+FwWPx+cnKSz8/P59966y1mWU+dOsUD4Pfu3cvzPM9v3ryZB8C/88474jV/+ctfeAD8+Pg4z/M8v3r1av62226T3efCCy/kly5dKr6fOXMm/4c//EF2zQMPPMCvXr1afL9z507e6/Xy9957L+/xePitW7cyy0gQBEFYD1muCIIgCMv54he/iLa2Nvz5z3/GFVdcgS1btmD58uV45plnxGs2b96MdevWYfr06SguLsZXv/pV9Pb2YnR0VLymoKAAdXV14vuqqirMnj0bRUVFss+6urpkv7969WrV+yNHjjDLumfPHhw/fhzFxcWi1a2srAwTExM4ceJEQs+9ZMkS8fW0adMAQCzbkSNHmOUS6O7uRnNzM2655RaxHEVFRfiP//gPWTlWr16N//2//zceeOABfOc738Ell1ySUBkJgiAI86CEFgRBEERayMvLw7p167Bu3Tp873vfw6233or77rsPN910E06fPo0NGzbgtttuwwMPPICysjLs2LEDt9xyCwKBgHgPr9cruyfHcczPwuFw3PJwHMf8PBwOY8WKFfj973+v+q6iosLIo4pIyyb8npGySa978sknceGFF8q+c7vdsuvee+89uN1uNDQ0JFQ+giAIwlzIckUQBEFkhHPOOUe0Sn344YcIBoN46KGHsGrVKsyfPx9tbW2m/dbu3btV7xcsWMC8dvny5WhoaEBlZSXmzp0r++fz+Uwr08KFC5nlEqiqqsL06dNx8uRJVTnmzJkjXvfTn/4UR44cwdatW/HWW2/h6aefNq2MBEEQRGKQckUQBEFYSm9vLz71qU/hv//7v7F//36cOnUKL730En7yk5/g2muvBQDU1dUhGAzisccew8mTJ/G73/0OTzzxhGlleO+99/CTn/wEx44dw+OPP46XXnoJ3/rWt5jXXn/99SgvL8e1116L7du349SpU9i6dSu+9a1voaWlxbQyfetb38JvfvMb/OY3v8GxY8dw33334dChQ7Jr7r//fjz44IP4+c9/jmPHjuHAgQN4+umn8fDDDwMA9u3bh+9973t46qmncNFFF+HnP/85vvWtb+HkyZOmlZMgCIIwDilXBEEQhKUUFRXhwgsvxM9+9jNccsklWLRoEe6991587Wtfwy9+8QsAwLJly/Dwww/jxz/+MRYtWoTf//73ePDBB00rw3e+8x3s2bMH5513Hh544AE89NBDuOKKK5jXFhQUYNu2bZg1axauu+46LFy4EDfffDPGx8dRUlJiWpk2btyI733ve/g//+f/YMWKFTh9+jT++Z//WXbNrbfeiv/6r//CM888g8WLF+PSSy/FM888gzlz5mBiYgLXX389brrpJnzuc58DANxyyy34zGc+gxtuuEGWjp4gCIJIDxzP83ymC0EQBEEQVjF79mzceeeduPPOOzNdFIIgCCLLIcsVQRAEQRAEQRCECZByRRAEQRAEQRAEYQLkFkgQBEEQBEEQBGECZLkiCIIgCIIgCIIwAVKuCIIgCIIgCIIgTICUK4IgCIIgCIIgCBMg5YogCIIgCIIgCMIESLkiCIIgCIIgCIIwAVKuCIIgCIIgCIIgTICUK4IgCIIgCIIgCBMg5YogCIIgCIIgCMIESLkiCIIgCIIgCIIwgf8Hz3t0YlTUxnEAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "y_pred1 = data['y_pred1']\n",
    "y_test1 = data['y_test1']\n",
    "plot_data = pd.DataFrame({\n",
    "    'Sample Index': range(len(y_pred1)),\n",
    "    'y_pred1': y_pred1,\n",
    "    'y_test1': y_test1\n",
    "})\n",
    "\n",
    "plt.figure(figsize=(10, 6))\n",
    "plt.plot(plot_data['Sample Index'], plot_data['y_pred1'], label='y_pred', marker='o', fillstyle='none', color='red', alpha=0.5)\n",
    "plt.plot(plot_data['Sample Index'], plot_data['y_test1'], label='y_test', marker='o', fillstyle='none', color='blue', alpha=0.5)\n",
    "plt.xlabel('Sample Index')\n",
    "plt.ylabel('Value')\n",
    "plt.legend()\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "59aea1ed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(900     0\n",
       " 1003    0\n",
       " 671     0\n",
       " 620     0\n",
       " 926     0\n",
       "        ..\n",
       " 919     1\n",
       " 1027    0\n",
       " 303     0\n",
       " 599     1\n",
       " 575     0\n",
       " Name: 术中不良反应, Length: 249, dtype: int64,\n",
       " array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0], dtype=int64))"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test1,y_pred1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c3c394ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1oAAAImCAYAAABKNfuQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACjMUlEQVR4nOzdeXhU5d0+8PvMnpnseyAEQhAQBQRBUUEQ0S64FHmtWqGKiv4UxaWCtVqX91Wx1UpFBBVxqbaCe6vWtqitS0E2BVFABBKykZB9JrNvvz8mMzBwgORkZp4zk/tzXb0qySTzzeHmmXznWY4UDAaDICIiIiIiopjRiC6AiIiIiIgo1bDRIiIiIiIiijE2WkRERERERDHGRouIiIiIiCjG2GgRERERERHFGBstIiIiIiKiGGOjRUREREREFGNstIiIiIiIiGKMjRYRUZyp4b7waqiBUh9zRkR0EBstIurTZs+ejWHDhkX+N3z4cIwZMwaXXHIJXnnlFfj9/qjHT506Fb/+9a+7/f0//vhj3HXXXcd93K9//WtMnTpV8fMcjcfjwaJFi/Dee+8d9bnU4PHHH8fpp5+OU045Be++++4Rn6+trY36exo2bBhOPvlknHnmmbjxxhvx9ddfRz1+/fr1GDZsGNavX3/U51i/fj1+9KMf4eSTT8a1114b7x8x5cyePRuzZ8+O/PmNN97A7373u8if3377bQwbNgy1tbWKvr/VasXSpUtx4YUXYsyYMTjjjDPwy1/+Eh9//HGvayciSgSd6AKIiEQbMWIE7r//fgCA3+9HR0cHPv30UzzyyCPYvHkzFi9eDEmSAABLly5Fenp6t7/3Sy+91K3H3XTTTfjlL3/Z49qP58CBA3jppZewaNGiuD+XUrt27cKKFSvw85//HBdffDEGDx581MfeeOONmDJlCgDA7XajoaEBL7/8Mq688kosWbIE06ZNAwCcdNJJWL16NYYMGXLU57juuusQCATw3HPPIS8vL+4/Z6oJ/5sJW758OU477bSYfO89e/Zg7ty5CAQC+OUvf4nhw4fD4XDggw8+wE033YR58+Zh/vz5MXkuIqJ4YaNFRH1eeno6TjnllKiPTZ06FeXl5Vi0aBGmTp2Kiy66CECoKYuHsrKyuHxf0c/VHe3t7QCA6dOnY9y4ccd8bFlZ2RF/Vz/5yU/wi1/8Avfccw8mTJiA9PT0I/5O5Z6jvb0d48ePx5lnnhmrH6VPCTexseb1enHbbbdBr9fjL3/5S1QTPG3aNGRnZ+Ppp5/Gueeei5NOOikuNRARxQKXDhIRHcXs2bNRWFiIVatWRT52+JK+v//977joooswatQoTJgwAXfeeScOHDgQ+foNGzZgw4YNkWVs4SVtq1atwjnnnIMzzzwTX3zxhexyPq/Xi4ceegjjx4/H+PHjcdddd6G1tTXyebmvCS+xe/vtt1FbW4tzzz0XAHD33XdHHnv41/n9fvz5z3/GhRdeiFGjRmHKlCl4/PHH4Xa7o57r6quvxltvvRVZbnfRRRfh008/Pe51/Pvf/45LLrkEY8aMwVlnnYX77rsPHR0dAICnnnoqsvzsqquuUrSk0WAw4JZbbkF7ezs+/PBDANFLB+WeY9iwYairq8O7774btcRw165duOGGGzB27FiMHTsW8+bNQ01NTeS5jvb3BwCbNm3CrFmzMHr0aJx22mlH/H29/fbbGDFiBLZu3YrLLrsMI0eOxJQpU7BixYqon8dut2PRokU4++yzccopp+CSSy7BJ598EvWYN954A9OnT8fJJ5+MKVOm4KmnnoLP54t8vrW1FXfeeSfOOussjBw5EhdffLHsksywefPmRd5MCLvmmmtw0kknwW63Rz722GOP4ZxzzgEQvXRw6tSpqKurwzvvvHPEcsGtW7fi8ssvj/y8K1euPGodAPDpp59i165duPXWW2VnGm+++WZceeWVkWW9R1uiePi/1WHDhmHp0qWYOXMmTj31VCxbtgwnnngiXn755aivs1qtGDlyJJ5//nkAiMx6nnfeeTj55JPxox/9CK+88soxfwYiIoCNFhHRUWm1Wpxxxhn45ptvon6JDdu8eTPuvPNOnH/++VixYgXuvvtufPnll/jVr34FILS0asSIERgxYgRWr14d9e774sWLcdddd+Guu+46YoYm7MMPP8S3336LRx99FAsXLsR//vMf3HTTTd2uv7CwEEuXLgUQWnIX/u/D3XfffXjkkUcwdepULF++HFdeeSVeffVV3HTTTVGHG3z77bdYuXIl5s+fj6effho6nQ7z58+PNE1yli1bhttvvx2jR4/GkiVLMG/ePPzzn//E7Nmz4XK5cOmll+K+++6L1HG0Go/nrLPOgkajwVdffXXE5w5/jsWLF2P16tUoKCjA5MmTI383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78c12L3TmxdySg3MgHppJAkaXfzHOGYg9ei0odkpS/zuIECkWmyy+jZJkhT3B0nfaIVnsTweT9SMltvtRlpaz0/GGjNmTMxqIyIiIiKivinp10OUlJQAAA4cOBD18QMHDqC4uFhESURERERE1MclfaM1fPhwpKenY/369ZGPWa1WbN++HePGjRNYGRERERER9VVJv3TQYDBg1qxZePzxx5Gbm4v+/fvjscceQ3FxMc477zzR5RERERERUR+U9I0WAMyfPx8+nw/33nsvXC4Xxo8fj5UrV/LkQCIiIiIiEiLpj3cnIiIiIiJSm6Tfo0VERERERKQ2bLSIiIiIiIhijI0WERERERFRjLHRIiIiIiIiijE2WkRERERERDHGRouIiIiIiCjG2GgRERERERHFGButY6iursaNN96IcePGYdy4cbj99tvR0NAguixKoP379+OOO+7AWWedhfHjx+Paa6/FDz/8ILosEuSee+7Br3/9a9FlUJwFAgEsWbIEkyZNwujRo3HNNddg3759ossiQZYtW4bZs2eLLoMSrL29Hffddx/OPvtsjB07FldccQU2bdokuixKsJaWFixYsAATJkzAmDFjcP3112P37t3d/no2Wkfhdrtx9dVXAwBee+01vPLKK2hqasINN9wA3uO5b/B4PLj++uvR0tKCZ599Fn/5y1+QkZGBq666Cq2traLLowTy+/343e9+hzfffFN0KZQAy5Ytw6pVq/DQQw9h9erVkCQJc+fOhcfjEV0aJdhLL72EJUuWiC6DBLjjjjuwdetWPPHEE3jzzTdx0kkn4dprr8WePXtEl0YJdOONN6KmpgYrVqzAm2++CZPJhKuvvhpOp7NbX89G6yjq6+sxcuRIPPzwwzjhhBNw4okn4uqrr8bOnTvR1tYmujxKgE2bNmHXrl34/e9/j5NPPhknnHACfv/738PhcOCTTz4RXR4lyJ49e3DFFVfg3XffRb9+/USXQ3Hm8Xjwwgsv4JZbbsHkyZMxfPhwLF68GI2NjVizZo3o8ihBGhsbcd111+HJJ59EeXm56HIowfbt24f//ve/uP/++zFu3DgMHjwY99xzD4qK/n979x9TVf3HcfwJKF4JMSABJyuVlB/CUAYkhmIomaauqKWEDH+UFiDpzB/lzyL5IQiamAW4mQiC06Wl9ENra6mEzeackssWTnEuwEC0FBDv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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "# Set style\n",
    "sns.set(style=\"whitegrid\")\n",
    "differences = y_pred - y_test\n",
    "# Create a histogram plot using seaborn\n",
    "plt.figure(figsize=(10, 6))\n",
    "# 创建带有分布曲线的直方图\n",
    "sns.histplot(differences, bins=np.arange(-3, 4) + 0.5, kde=True, discrete=True, shrink=0.8)\n",
    "plt.xticks(np.arange(-3, 4))\n",
    "plt.xlabel('Differences')\n",
    "plt.ylabel('probability')\n",
    "plt.title('Distribution of Differences with Curve')\n",
    "plt.grid(True, which='both', linestyle='--', linewidth=0.5)\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b67c1998",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Xie_PQ\\AppData\\Roaming\\Python\\Python311\\site-packages\\sklearn\\model_selection\\_split.py:700: UserWarning: The least populated class in y has only 1 members, which is less than n_splits=5.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scikitplot as skplt\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "skplt.estimators.plot_learning_curve(automl.model, X_train, y_train) \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "76e01468",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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5e2yCWol/dumopw5c0aZmZnF7rd3717l5eVd8vcBAACca8WKFUpPT1dcXJwaN26s8ePHa+bMmcW2i46O1uDBgwusP3DggAzDUEREhAICAhQQEKCqVauWRekAytllEdROnDih+vXra+nSpSVuk5CQoOeee85t3fLly9WsWbNCQ9j333+vp59+Wu3atVOLFi20evVqZWVlyWKxKDQ0VPXq1VOrVq0u+VwAAMCVa/v27WrdurV8fX0lSc2bN1dycnKx7ZYtW6bevXsXWP/TTz8pNzdXDRo0UNWqVdW3b99CR90AXH4ui6A2ceJE+fr66q677iqwzTAMZWdny+l0SpKefvppffbZZ/L29tb8+fN13XXXadWqVZKkr776Si1bttTGjRsLHGfdunXavXu3ZsyYobS0NN1+++2SJG9vb6WkpOiTTz5RlSpVyvAsAQBAZWe329WwYUPXssVikdVqLTZcNWrUqND1u3btUmRkpFauXKnExESlpKRo9OjRpVozgIph+qD2888/680331TVqlXVunVrtWjRQlWqVFFYWJhatGih5s2bKyIiQm+//bYkyel0Ki8vTx4eHho8eLCSk5PVqVMnHT16VJs2bdK8efM0evRoHT161O17fHx8dNVVV+naa6+Vh4eHDMPQqVOnFBQU5NrHYrGU67kDAIDKxWazydvb222dj49PiR7NKMzIkSO1YsUKNWvWTOHh4Zo0aZKWLFlSGqUCqGC2ii6gKKdPn1a/fv3Ur18/twdtW7RooSlTphSY1WjDhg367bffVLVqVWVlZenw4cNavHix2rRpo+eee06PPPKIsrOz9corr+i2227T/PnzdeONN0rKD2EffPCBPv/8c6WlpWnZsmVas2aNbr31VkmSn5+ftm7dqmeeeUYtW7ZU//79y60fAABA5RAYGKikpCS3dRkZGfLy8iqV4wcEBCg1NVUOh6NAIARweTHtiJrT6VSvXr3kdDo1derUQvfJy8uT0+nU6dOnJUlHjx5Vs2bNlJ2dLQ8PDwUHB2v9+vWKi4vTtm3b1KlTJ910001q1aqVxo4dqx49eujEiROu4w0YMED79u1TRkaG2rZtq82bN+ull16SJF133XVasGCBrr32Wl133XVl3wEAAKDSiYqK0oYNG1zLKSkpcjgchU67XxL33nuv2/E2bdqkunXrEtKASsC0I2o2m01PPvmkQkJCdOONN8rDw8P14O3OnTv16KOPqmrVqsrNzVVAQIC+//573XPPPTp48KCGDh2qwYMH6/7775e3t7e2bt2qefPmKTw8XI0bN9aPP/6oPn36qGvXrvL393f73ry8PGVnZ8vT01MDBgzQzz//rF9//dW1vUWLFmrRosV563Y4HHI4HK5lu91euh0DAAAuW+3bt1d6errmzp2rgQMHauLEiercubOsVqvsdruqVKkiT0/PEh+vefPmevLJJxUfH6/jx49rzJgxGjZsWBmeAYDyYjFKY977MhYREaH33ntPrVu3lnT+Wx8lKSgoSKmpqWrUqJHWrVunwYMH6/nnn9eqVatkGIZycnJks+Xn00GDBikkJESSFB8fr1GjRqlKlSrKycnR8uXLNW/ePH344YcaMmSIJGnx4sV6/PHHNXz48PPWOnbsWI0bN67A+pDhH8nD2/dSuwIAAFzGUiZG69NPP1X//v1VvXp15ebmau3atWrWrJlCQ0MVHx+v2NjYwtumpKhhw4ZuryxyOp0aMmSIFi9erNq1a2vgwIEaPXq06886AMzFbrfL399f6enp8vPzK3Jf0/6/OC8vT4ZhyGq1ysOj+Ds0c3Nz5eHhoWrVqunXX3/ViRMnNHfuXHl6eqp69epq166d6ziffvqpNmzY4Lqt8axBgwZp2rRpruVbb71V//3vfzV48GDVr19fCQkJuvfee4usY9SoUXrqqadcy3a73RUGAQAAYmNjtXv3biUmJqpNmzaqVauWpPwgVpTQ0NAC75X19PTUzJkzS/QuNgCXF9MGtY8//ljPPvusvL29ZbPZXKNaUv6tj0OGDFG1atUkSTk5OXI4HPrggw9ks9k0depUvfbaa5o6dapq1qwpm82mxo0b68yZM7rqqqv04IMPavHixW6zOBqGoSNHjmjevHnatm2bOnTooJiYGP3f//2f4uPj1bhxY915551q0KBBkXV7e3tzXzgAAChScHCwgoODK7oMACZm2qDWu3fvQl/sKBV966PT6ZTD4dCAAQPUrl07jRw5UpK0f/9+PfDAA7r55pt1++23KyoqytXmmWee0Ztvvqmrr75ajRo10g033KCbbrpJkvTEE0/ouuuuU15enhITE8vgTAEAAADAnWmDWlFyc3OVm5tb6LbMzExFRETo+eef1/79+/XDDz8oNzdXt956q5YsWaIuXbrovffe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2202bNigPn36XFDw6tOnj95+++3SOyEAMBmbzSZvb2+3dT4+PsrMzCxxm3P3/+ijj/Tnn3/qt99+04kTJxQREaEHHnigbIoHAKASM3VQq1Kliv79738rJSVFmzZtkre3t1588UWFhobq6quvlpeXl4KDgxUSEqJZs2ZJknbs2KGHHnpIH3zwga655hrl5eVJknr16qWBAwfq9OnTkvIDXm5ubrHfX6tWrbI9SQCoQIGBgTp+/LjbuoyMDHl5eZW4zbn7L1y4UEOHDlXTpk0VGBio+Ph4LV26VCdPniyT+gEAqKxMHdQ8PNzLs1qtGjdunL755hvt27dPDRs21MaNG3X48GE98sgj2rFjh7p06aIRI0bopptu0tGjR+Xr66vAwEDVrl1bcXFxatasmYKCguTr66tXX33Vdezly5fLarUqKCjI9fnpp5/0xBNPuJZ9fX113333lXc3AECZiYqK0oYNG1zLKSkpcjgcCgwMLHGbbdu2KTg4WJKUk5Ojo0ePurYdPnxYkor9izEAAODOVtEFFOeVV17RtGnTlJOTI4vFot27dys6OlopKSlKT09XjRo1XPvWqlVLjzzyiIYMGaLQ0FD997//VVZWlmu7xWLRzp07FRQUVOB7PD09FRISopSUFNe6W2+9VYMHD9aDDz4oSXrhhRe0f//+Iut1OBxyOByuZbvdfpFnDgBlr3379kpPT9fcuXM1cOBATZw4UZ07d5bVapXdbleVKlXk6enp1qZ79+567LHHtHr1arVr105TpkxR165dJUlt27ZVXFycGjRooCpVqig+Pl633HKLatasWRGnBwDAZcvUI2qSNGbMGCUlJWnNmjXKy8vTwYMHFRkZqby8PNntdlWrVs21b1BQkF588UW99NJLuu2229SqVatSr+fsrZTnM2HCBPn7+7s+ISEhpV4DAJQWm82mhIQEDRkyRHXq1NGSJUs0ceJESfkzQC5fvrxAm6CgIL3++uvq2rWr6tWrp6SkJL3wwguSpOHDh6tv37565ZVX9Mgjj8jf318ffPBBuZ4TAACVgelH1M6Vm5urFStW6NSpU5o2bZpsNpvee+895eXl6ZprrlHHjh21evVqTZs2zfVOH4fDIZvNJqvV6nYcp9MpHx8f1zqHw6H9+/e7jbalp6dr+/bteuaZZyRJmZmZio6OLrLGUaNG6amnnnIt2+12whoAU4uNjdXu3buVmJioNm3auJ7NPfcOg78bNmyY7rjjDu3YsUMdOnSQn5+fpPyJRd588029+eab5VE6AACVlumD2oQJE/Tee+/JMAyFh4erTp06OnnypFavXi0fHx99+eWXql+/vqpWrapdu3apb9++brfYPPTQQ/riiy9cD7pfc801ysnJUb169bRz507XfjExMUpOTtaWLVvUr18/SVJISIjmzZunDh06lLheb2/vAjOoAYDZBQcHu54zK6mwsDCFhYWVUUUAAFzZTB/URo0apSFDhuiuu+7SM888o06dOkmS/v3vf2vXrl3y9/fXtGnTJOVPy/9///d/2rdvn6v9/PnzXS9ltVgs2rVrl4KCglzT+58rJydH//jHP5SXl6c777xTBw8eVHh4eDmcJQAAAAD8j+mfUZPynwu7+uqr1atXL6WkpCg3N1dz5sxR37593aaQ7t69uyZPnuzW9mxI+7vC1jdr1kwJCQkaNGiQnnzySTVq1Ei1a9cu3ZMBAAAAgGKYekTN6XTq559/Vps2bRQYGKj7779f7777rgzDUKtWrRQeHq6DBw9KktLS0txmgLxYAwYM0I4dOzRhwgR17NhRmZmZ8vX1veTjAgAAAEBJmXpE7ffff9eCBQv02GOP6csvv1R8fLxq1aql5cuXa/r06bJYLMrIyJCUH7BWrFghKf8WRknKzs4+77t7DMNQdna22/L27dv19NNP691339XIkSPl4eGh0NBQDRkyRHPnztXGjRv1yy+/6Jdffil29kcAAAAAuFimHlEbN26catWqpUaNGiknJ0c9evTQ4cOHtXLlSlWrVk033HCDhg0bpuuuu07Z2dm65ZZbJOWPxEnSc889p9mzZ8tmyz/NmjVr6tprr5WUfztlzZo1tXv3bn377bfq06ePcnJy1KdPH23cuFFNmjSRJG3ZskWff/655s2bp+TkZKWmpqpnz55asGBBBfQIAAAAgCuBxShsVg2T2rp1q6699lpVqVKl1I+9YcMGRUZGFnix66Wy2+3571Mb/pE8vLmFEoB5pEws+nUjAACgdJ3NBunp6a5X25yPqUfU/u7GG28ss2O3bt26zI4NAAAAABfC1M+oAQAAAMCViKAGAAAAACZDUAMAAAAAkyGoAQAAAIDJENQAAAAAwGQIagAAAABgMgQ1AAAAADAZghoAAAAAmMxl9cLry1nSuK7Fvn0cAAAAACRG1AAAAADAdAhqAAAAAGAyBDUAAAAAMBmCGgAAAACYDEENAAAAAEyGoAYAAAAAJkNQAwAAAACTIagBAAAAgMnwwutyEvHSSnl4+1Z0GagEUiZGV3QJAAAAKGOMqAEAAACAyRDUAAAAAMBkCGoAAAAAYDIENQAAAAAwGYIaAAAAAJgMQQ0AAAAATIagBgAAAAAmQ1ADAAAAAJMhqAGXoaSkJEVFRalGjRoaMWKEDMMots3atWsVHh6uoKAgxcXFFbqP0+nU9ddfrzVr1pRyxQAAALgQBDXgMuNwOBQTE6PIyEglJiYqOTlZc+bMKbLN8ePH1b17d/Xr108//vij5s+fr9WrVxfYb/LkyUpKSiqjygEAAFBSBDXgMrNixQqlp6crLi5OjRs31vjx4zVz5swi28yfP1/16tXTmDFj1KRJE7344osF2uzevVtTpkxRaGhoGVYPAACAkiCoFWPPnj3KyMio6DIAl+3bt6t169by9fWVJDVv3lzJycnFtunUqZMsFoskqVWrVtqyZYvbPo8++qhGjhypq6++umwKBwAAQIlddkEtJydHqampSk5O1tdff623335bDz300HmfuTkrKipKb731liTp9ddf17Rp00r0fX369NHbb799yXUDpcVut6thw4auZYvFIqvVqrS0tBK38fPz08GDB13Ls2fPVnp6up5++umyKRoAAAAXxFbRBRQnOztbN954o44cOaKsrCx5eHjIwyM/X7Zp00Z169ZV3bp1Va1atSKP4+npKW9vb0nSnXfeqZtvvlm1atXSfffdV2S7KlWqqFatWqVzMkApsNlsrt/yWT4+PsrMzFSNGjVK1Obs/lL+82ujRo3SV199JZvN9JcEAACAK4Lp/1Tm5eWlH374QVarVVWrVpXFYtF7772nefPmacWKFQX2NwxDTqdTXl5ebus9PDxcfwi97rrrNHfuXIWFhcnhcLj+ALt8+XJ1797d7Q+76enp+vnnn/Xss89KkjIzMxUTE6MPP/ywrE4ZKFJgYGCBCT8yMjIK/Ob/3ub48eOF7j98+HANGjRILVq0KJN6AQAAcOEui1sfvby85O3t7Xq+5u/y8vJ0+vRpSdLvv/8ub29veXt7y8fHRz4+PvLw8ND333+vhx56SF5eXvLx8VG/fv3UokULtW3b1nUcT09PhYSEKDU11fW5+eabNXXqVNfyU089JR8fn3I5b6AwUVFR2rBhg2s5JSVFDodDgYGBJW6zbds2BQcHS5IWLFigqVOnKiAgQAEBAVq/fr3uvvtuTZw4sexOAgAAAEUy/YialH+r4tatW+Xp6Skpf3ryrKwsBQUFScoPag6HQ3/99ZcaN26s3Nxc1+2Rf/31l0JCQuTl5aWAgAB169ZN77zzjuvYubm5F1xPXl7eebc5HA45HA7Xst1uv+DjA0Vp37690tPTNXfuXA0cOFATJ05U586dZbVaZbfbVaVKFdf/V87q3r27HnvsMa1evVrt2rXTlClT1LVrV0nS3r173fbt27evhg8frm7dupXbOQEAAMDdZRHU/v7y3bO3Pp7vpbznjry99dZbuummm5Sbm6vbb79dcXFx+ve//+0afbBara59HQ6H9u/f7wqAUv6tj9u3b9czzzwjKf/Wx+jo6PPWOmHCBI0bN+5CTxEoMZvNpoSEBPXv318jRoxQbm6u1q5dKyl/Bsj4+HjFxsa6tQkKCtLrr7+url27yt/fX1WrVnVNz//36fh9fHxUt25dBQQElMPZAAAAoDAWwzCMii7ifAzDUHZ2try8vNzC1/mCmtPplNVqdY2m7d69Wy1atNCKFSs0evRoDR48WGvXrlVmZuZ5nzHbuXOntmzZon79+kmSQkJCNG/ePHXo0KFENRc2ohYSEqKQ4R/Jw9v3Qk4fKFTKxPy/KDh48KASExPVpk2bEk94s2fPHu3YsUMdOnSQn59fWZYJAACAv7Hb7fL391d6enqxfxYz9YjaH3/8oYiICFWpUsUVvqSCtz6edebMGX3yySe64447lJGRof79++vee+9V+/btXftMnjxZzZo107///W89//zzBb4zJydH//jHP5SXl6c777xTBw8eVHh4eIlrPvt8HFDWgoODXc+ZlVRYWJjCwsLKqCIAAACUFlMHtcaNG+vMmTMF1hd36+PJkyd19913y2az6d1333XbVqtWLS1fvlydOnXS/v37FRcX53pxsCQ1a9ZMCQkJGjRokO677z41atRItWvXLtXzAgAAAICiXBazPl6IH374QREREcrNzdXy5ctVpUqVAvtERUVp5cqVWrZsmTp16iSn0+m2fcCAAXrqqac0d+5chYSEuN43BQAAAADlwdQjaueTkZFx3qn6W7RooX/+858aPny42zT6hmHo3Mfx2rRpo6SkJNntdtcMeYZh6Oeff9bcuXM1e/ZsjRw5Uj/99JNCQ0PVs2dPtWnTRk2bNnWNwDVr1sztlkwAAAAAKA2XVVA7ffq02rVrp19++UWPPvpoofv4+vpq5MiRBdY7HI4Ct1GefW+UJH377bfq06ePcnJy1KdPH23cuFFNmjSRJG3ZskWff/655s2bp+TkZKWmpqpnz55asGBB6Z4gAAAAAMjksz4W5quvvpKfn59at25d6qNZGzZsUGRkZIF3UF2KszO7MOsjSsvZWR8BAABweak0sz4Wpixfwtu6desyOzYAAAAAlBQPWAEAAACAyRDUAAAAAMBkCGoAAAAAYDIENQAAAAAwGYIaAAAAAJgMQQ0AAAAATIagBgAAAAAmQ1ADAAAAAJMhqAEAAACAydgquoArRdK4rvLz86voMgAAAABcBhhRAwAAAACTIagBAAAAgMkQ1AAAAADAZAhqAAAAAGAyBDUAAAAAMBmCGgAAAACYDEENAAAAAEyGoAYAAAAAJkNQAwAAAACTIagBAAAAgMkQ1AAAAADAZAhqAAAAAGAyBDUAAAAAMBmCGgAAAACYDEENAAAAAEyGoAYAAAAAJmOr6AIqO8MwJEl2u72CKwEAAABQkc5mgrMZoSgEtTJ24sQJSVJISEgFVwIAAADADDIyMuTv71/kPgS1MhYYGChJ2rdvX7H/MnBx7Ha7QkJCtH//fvn5+VV0OZUO/Vv26OOyRf+WPfq47NHHZYv+LXv0cT7DMJSRkaH69esXuy9BrYx5eOQ/Bujv739F/yjLg5+fH31chujfskcfly36t+zRx2WPPi5b9G/Zo49V4sEbJhMBAAAAAJMhqAEAAACAyRDUypi3t7deeukleXt7V3QplRZ9XLbo37JHH5ct+rfs0cdljz4uW/Rv2aOPL5zFKMnckAAAAACAcsOIGgAAAACYDEENAAAAAEyGoAYAAAAAJkNQK4GkpCRFRUWpRo0aGjFihEryWN/atWsVHh6uoKAgxcXFlcq2yqy0+zghIUH16tWTp6en7rjjDh0+fNi1LSYmRhaLxfXp3LlzqZ+P2ZR2/xbVh/yGL72Px44d69a/Zz9r1qyRxG+4pP0rSXv27FFgYGCB9VyHCyrtPuY6XFBp9zHXYnel2b9chwt3MX1c1LWAa3ExDBQpKyvLCA0NNR599FFjz549xl133WXMmjWryDbHjh0z/Pz8jHHjxhm7du0yWrZsaaxateqStlVmpd3H3333nVG7dm3j66+/Nvbv32+0a9fO6N+/v6ttvXr1jF9++cVIS0sz0tLSjFOnTpXp+VW00u5fwzh/H/IbLp0+PnPmjKtv09LSjO3btxu1atUyTp48aRgGv+GS9K9hGMYff/xhXHPNNcbf/1PHdbig0u5jrsMFlXYfGwbX4nOVdv9yHS7oYvq4qGsB1+LiEdSK8cknnxg1atQwTp8+bRiGYWzbts1o27ZtkW3eeOMNo2nTpkZeXp5hGIbx6aefGvfff/8lbavMSruP33vvPePjjz927Ttr1izjmmuuMQzDMPbv32/UrVu3LE7DtEq7f4vqQ37DpdPHf/fwww8b48ePNwyD37BhlKx/DcMwwsPDjcmTJxf4AxjX4YJKu4+5DhdU2n3Mtdhdaffv313p12HDuLg+LupawLW4eNz6WIzt27erdevW8vX1lSQ1b95cycnJxbbp1KmTLBaLJKlVq1basmXLJW2rzEq7jwcNGqSePXu69t25c6fCwsIkST/99JNyc3PVoEEDVa1aVX379lVaWlpZnJZplHb/FtWH/IZLp4/PdejQIX3yySd6/PHHJfEblkrWv5K0bNky9e7du9DjcR12V9p9zHW4oNLuY67F7kq7f8/FdTjfxfRxUdcCrsXFI6gVw263q2HDhq5li8Uiq9Va5P8h/97Gz89PBw8evKRtlVlp9/G5Tpw4oenTp2vYsGGSpF27dikyMlIrV65UYmKiUlJSNHr06FI8G/Mp7f4tqg/5Decrzd/wu+++q/79+6tatWqS+A1LJetfSWrUqFGJjsd1uPT7+Fxch/OVdh9zLXZXlr9hrsP5LraPz/r7tYBrcfEIasWw2WwF3qDu4+OjzMzMErc5d/+L3VaZlXYfn2vYsGFq06aNoqOjJUkjR47UihUr1KxZM4WHh2vSpElasmRJKZ2JOZV2/xbVh/yG/6c0fsO5ubmaMWOGhgwZ4lrHbzjfpfy2uA4XVNp9fC6uw/lKu4+5Frsrq98w1+H/udQ+/vu1gGtx8QhqxQgMDNTx48fd1mVkZMjLy6vEbc7d/2K3VWal3cdnzZo1S+vWrdOsWbPOe5yAgAClpqbK4XBcZPXmV1b9e9a5fchv+H9Ko49Xr16toKAghYeHn/c4/IYv/Xhch0u/j8/iOvw/ZdXHZ13p1+Ky6l+uw/9zKX1c2LWAa3HxCGrFiIqK0oYNG1zLKSkprotgSdts27ZNwcHBl7StMivtPpby7x8fPny4Fi1apDp16rjW33vvvW7tNm3apLp16xb4G6LKpLT7t6g+5DecrzR+w5L00UcfqUePHm7r+A2XrH8v5Hhch0u/jyWuw39X2n3MtdhdWfyGJa7D57rYPj7ftYBrcQlU9GwmZud0Oo1atWoZ77//vmEYhvHoo48ad999t2EYhpGenm5kZ2cXaHP8+HHDx8fHWLVqleF0Oo3o6Gjjn//85yVtq8xKu4+PHDli1K5d23j11VeNjIwM18cwDGPcuHFG69atjQ0bNhhffPGFUbduXePll18upzOtGKXdv0X1Ib/h0unjs0JCQgpMR8xvuGT9e9bevXsLzObGdbig0u5jrsMFlXYfcy12V9r9exbX4f+5mD4u6lrAtbh4BLUS+OSTT4wqVaoYtWvXNmrWrGkkJSUZhmEYV199tfHJJ58U2uatt94yPD09jaCgIOPqq682jhw5csnbKrPS7OM33njDkFTgYxiGkZ2dbfzjH/8wqlevbjRu3NgYN26c4XQ6y+UcK1Jp9m9xfchvuHSuE3v27DGsVqvrP2hn8Rsuef8axvn/AMZ1uKDS7GOuw4UrzT7mWlxQaV8nuA4XdKF9XNS1wDC4FhfHYhglfG37Fe7gwYNKTExUmzZtVKtWrRK12bNnj3bs2KEOHTrIz8+vVLZVZqXdx3BXnv17pf574Tdcti6mf4vCdbig0u5jFFSefXwl/o75DZc9rsXlh6AGAAAAACbDZCIAAAAAYDIENQAAAAAwGYIaAAAAAJgMQQ0AAAAATIagBgAAAAAmQ1ADAJSrOXPmyGKxFPh88803FV1aqXrwwQc1fPjwii4DAHCZIqgBAMpdRESE0tLS3D4dO3a85ONaLBalpKRc8nEqkzVr1ig0NLSiywAAXCBbRRcAALjyWK1WBQQEVHQZAACYFiNqAABT+eqrr3T99dcrICBAgwcPlsPhcG179913FRISourVqys2NlYZGRmSpGuvvVYWi0WS1LBhQ1ksFi1atEiSNHbsWD344IOuY/x9hCk0NFTffPONRo8erbp162r79u2ubXPnzlWTJk0UFBSk0aNHyzCMiz6vNWvWqEGDBnrggQdUr149TZ8+XVdffbU6duwowzAUGhqqf/3rX7r66qsVHBys6dOnu9rm5ubqxRdfVL169RQaGqp33nnHtS0lJUUWi0XHjx9Xnz59dNVVV0mSjhw5IovFottuu01//vmn6xbTI0eOSJJycnI0dOhQBQYGqlatWho9erTrmB07dtRbb72l3r17q2rVqmrdurVbu7N9Va9ePb300kuudk6nU88++6yrzo8++uii+wsArnQENQBAufvll18UEBDg+vzyyy+SpN9//1333HOPnnzySW3evFmbN2/Wa6+95mrzz3/+U7Nnz9aOHTt07Ngxvf3225KkTZs2KS0tTZK0fft2paWlqVevXiWuZ8yYMTp06JAWLlyoxo0bS5K+++47Pfzww4qPj9eaNWv0wQcfaP78+Zd03gcPHlSvXr10zTXXKC4uTosWLdLatWt16NAhSdLKlSv15Zdfavr06Ro+fLi2bNkiSYqPj9eiRYu0fPlyzZkzRy+99JI+/fRTt2P37NlTkZGRWrhwoSSpTp06SktL0xdffKGQkBDXLaZ16tSRlB96v/zyS23cuFGrVq3SW2+9pY0bN7qO98orr6ht27bavn277Ha7q6+nTJmiTz75RCtXrtTy5cv17rvvumqZOHGiPv74Y3399deaOnWqBg4cqL17915SnwHAlYqgBgAod02bNtW2bdtcn6ZNm0qSFi5cqBtvvFH/+Mc/1LhxYw0ZMkSff/65JKlJkyY6cuSIoqKitGPHDhmGoV27dkmSqlev7rqV0s/PTwEBAfL09CxxPf7+/pozZ45uu+02VatWTZL0/vvvq0ePHoqOjlZERIQeeOABVy0Xq06dOurRo4caNmyoHj166JZbbpGUPxIlSSNGjFCzZs10991364477nB9X0JCgsaOHauWLVuqY8eOGj58uN599123Y99111167rnn1LZtW0n5z+sFBASoWrVq8vDwcIXisyOPAwcO1C+//CJfX1/t2LFD3t7erv6UpFtuuUXDhw9XWFiYYmNjtX//fknSrFmzNHbsWN1www1q2bKllixZoiZNmrj6bMSIEYqIiFBMTIxuvPFGrVix4pL6DACuVDyjBgAod15eXoVOcHHw4EFt2bLFFbpycnJcwenMmTMaPHiw1q5dqxtvvFE2m025ubkX/N2ZmZkF1j3++OOF1rJ69WpXLdnZ2WrevPkFf9+5fHx8Cv3ns0JCQlz/HBwcrKNHj0qS9u/fr0aNGrm2NWrUqMDo3r/+9a8LqmXv3r168MEHdeTIEd1yyy2qVq2aW3/edtttrn/28vJy3fZ54MABt3937dq1c/3zwYMH9cwzz2jkyJGS8vu6Q4cOF1QXACAfQQ0AYBoNGjRQ9+7dNWXKFEn5z2adDVb/+c9/dPz4cR09elReXl569tlndezYMbf2FoulwHNkFovFLYAkJiYW+N6qVasWWsuQIUNcU+w7nU7l5eVd0vkV59wZK/ft26dWrVpJkq666ir98ccfat26taT8W0TPPot2VmHnIEkeHh6FPlv3xBNPqEuXLpo8ebIkub7rLD8/v0KPFxISor179+rmm2+WJE2ePFmnTp3Syy+/rAYNGuiVV15x1XnmzJnzHgcAUDRufQQAmEa/fv303Xffaffu3ZLyw9lDDz0kSTp16pQMw1BqaqoWLFigd955p0AACQsL0/Lly3Xw4EGtW7dOUn7g2rRpkxwOh3bt2qUZM2aUqJaBAwfqs88+05EjR5STk6Pnn39ezz//fCmebUGvv/66kpKS9Pnnn+ubb75RbGysJOmRRx7R2LFjtXXrVq1du1b/+c9/NGTIkBIds1GjRjp06JA2b96sPXv2aOvWrZLy+9PpdOrAgQN68cUXtWnTphJNlvLQQw9p3Lhx2r59uzZv3qypU6cqPDxckvR///d/mjNnjpxOp06cOKGePXvqk08+ubjOAIArHEENAGAajRo10vvvv6+nnnpKzZo1U1JSkmtyjCeeeEKGYeiaa67R7NmzNWjQIG3bts2t/bvvvqv4+HiFhYW5Zk3s27evrrrqKl1zzTV6+OGHNWHChBLV0q5dO40dO1YDBgzQjTfeqOzsbNeEGmXlnnvuUUxMjIYOHapp06a5brV84okn1LdvX915550aOHCgxo4dq3vuuadEx2zQoIEmT56srl27qmXLlvrhhx8k5U/88dlnn6l58+Y6cuSIunTp4gpxRXnmmWfUo0cP3XHHHYqJidGQIUPUr18/SdJzzz2n66+/Xu3atVO3bt0UHR2toUOHXmRvAMCVzWJcylzDAACgVISGhmrOnDml8uJvAMDljxE1AAAAADAZRtQAAAAAwGQYUQMAAAAAkyGoAQAAAIDJENQAAAAAwGQIagAAAABgMgQ1AAAAADAZghoAAAAAmAxBDQAAAABMhqAGAAAAACZDUAMAAAAAk/l/l/pwyUwECEUAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "############ 排序版 ############\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #显示中文\n",
    "# 获取特征重要性\n",
    "feature_importance_sum = automl.model.estimator.feature_importances_.sum()\n",
    "feature_importance_ratios =  automl.model.estimator.feature_importances_ / feature_importance_sum\n",
    "# 将特征重要性与其对应的特征名进行排序\n",
    "sorted_idx = feature_importance_ratios.argsort()[::-1]\n",
    "features = X_train.columns[sorted_idx]\n",
    "importances = feature_importance_ratios[sorted_idx]\n",
    "# 绘制特征重要性条形图\n",
    "plt.figure(figsize=(10, 5))\n",
    "plt.barh(range(len(features)), importances, align='center')\n",
    "plt.yticks(range(len(features)), features)\n",
    "plt.xlabel('Feature Importance')\n",
    "# plt.title('Feature Importances of LightGBM Model')\n",
    "plt.gca().invert_yaxis()  # 反转y轴，使得最重要的特征在上方\n",
    "for index, value in enumerate(importances):\n",
    "    plt.text(value, index, f'{value:.2f}')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "47a21dfc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:55:31] {1680} INFO - task = classification\n",
      "[flaml.automl.logger: 05-15 10:55:31] {1691} INFO - Evaluation method: cv\n",
      "[flaml.automl.logger: 05-15 10:55:31] {1789} INFO - Minimizing error metric: 1-accuracy\n",
      "[flaml.automl.logger: 05-15 10:55:31] {1901} INFO - List of ML learners in AutoML Run: ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 0, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2345} INFO - Estimated sufficient time budget=426s. Estimated necessary time budget=0s.\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.1765,\tbest estimator lgbm's best error=0.1765\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 1, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2392} INFO -  at 0.2s,\testimator lgbm's best error=0.1622,\tbest estimator lgbm's best error=0.1622\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 2, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2392} INFO -  at 0.2s,\testimator xgboost's best error=0.1622,\tbest estimator lgbm's best error=0.1622\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 3, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2392} INFO -  at 0.4s,\testimator xgboost's best error=0.1613,\tbest estimator xgboost's best error=0.1613\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 4, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2392} INFO -  at 0.5s,\testimator extra_tree's best error=0.1765,\tbest estimator xgboost's best error=0.1613\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 5, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2392} INFO -  at 0.6s,\testimator rf's best error=0.1765,\tbest estimator xgboost's best error=0.1613\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 6, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2392} INFO -  at 0.7s,\testimator lgbm's best error=0.1622,\tbest estimator xgboost's best error=0.1613\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 7, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2392} INFO -  at 0.7s,\testimator lgbm's best error=0.1622,\tbest estimator xgboost's best error=0.1613\n",
      "[flaml.automl.logger: 05-15 10:55:31] {2219} INFO - iteration 8, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2392} INFO -  at 0.9s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2219} INFO - iteration 9, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2392} INFO -  at 1.2s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2219} INFO - iteration 10, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2392} INFO -  at 1.4s,\testimator rf's best error=0.1737,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2219} INFO - iteration 11, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2392} INFO -  at 1.5s,\testimator extra_tree's best error=0.1765,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2219} INFO - iteration 12, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2392} INFO -  at 1.6s,\testimator extra_tree's best error=0.1765,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2219} INFO - iteration 13, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2392} INFO -  at 1.8s,\testimator extra_tree's best error=0.1765,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:32] {2219} INFO - iteration 14, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2392} INFO -  at 1.9s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2219} INFO - iteration 15, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2392} INFO -  at 2.1s,\testimator extra_tree's best error=0.1660,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2219} INFO - iteration 16, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2392} INFO -  at 2.3s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2219} INFO - iteration 17, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2392} INFO -  at 2.4s,\testimator extra_tree's best error=0.1660,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2219} INFO - iteration 18, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2392} INFO -  at 2.6s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2219} INFO - iteration 19, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2392} INFO -  at 2.7s,\testimator xgboost's best error=0.1613,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2219} INFO - iteration 20, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2392} INFO -  at 2.8s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:33] {2219} INFO - iteration 21, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2392} INFO -  at 3.0s,\testimator rf's best error=0.1737,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2219} INFO - iteration 22, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2392} INFO -  at 3.2s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2219} INFO - iteration 23, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2392} INFO -  at 3.3s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2219} INFO - iteration 24, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2392} INFO -  at 3.5s,\testimator extra_tree's best error=0.1660,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2219} INFO - iteration 25, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2392} INFO -  at 3.6s,\testimator extra_tree's best error=0.1660,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:34] {2219} INFO - iteration 26, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:35] {2392} INFO -  at 4.0s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:35] {2219} INFO - iteration 27, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:55:35] {2392} INFO -  at 4.2s,\testimator xgboost's best error=0.1613,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:35] {2219} INFO - iteration 28, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:35] {2392} INFO -  at 4.3s,\testimator extra_tree's best error=0.1584,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:35] {2219} INFO - iteration 29, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:35] {2392} INFO -  at 4.4s,\testimator extra_tree's best error=0.1584,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:35] {2219} INFO - iteration 30, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2392} INFO -  at 5.0s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2219} INFO - iteration 31, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2392} INFO -  at 5.0s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2219} INFO - iteration 32, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2392} INFO -  at 5.2s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2219} INFO - iteration 33, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2392} INFO -  at 5.3s,\testimator extra_tree's best error=0.1584,\tbest estimator lgbm's best error=0.1546\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:55:36] {2219} INFO - iteration 34, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2392} INFO -  at 5.6s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2219} INFO - iteration 35, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2392} INFO -  at 5.8s,\testimator extra_tree's best error=0.1584,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2219} INFO - iteration 36, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2392} INFO -  at 5.8s,\testimator extra_tree's best error=0.1584,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:36] {2219} INFO - iteration 37, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2392} INFO -  at 5.9s,\testimator extra_tree's best error=0.1584,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2219} INFO - iteration 38, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2392} INFO -  at 6.1s,\testimator extra_tree's best error=0.1584,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2219} INFO - iteration 39, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2392} INFO -  at 6.4s,\testimator rf's best error=0.1737,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2219} INFO - iteration 40, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2392} INFO -  at 6.5s,\testimator extra_tree's best error=0.1565,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2219} INFO - iteration 41, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2392} INFO -  at 6.7s,\testimator extra_tree's best error=0.1565,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:37] {2219} INFO - iteration 42, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2392} INFO -  at 6.9s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2219} INFO - iteration 43, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2392} INFO -  at 7.2s,\testimator extra_tree's best error=0.1565,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2219} INFO - iteration 44, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2392} INFO -  at 7.4s,\testimator extra_tree's best error=0.1565,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2219} INFO - iteration 45, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2392} INFO -  at 7.6s,\testimator extra_tree's best error=0.1565,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2219} INFO - iteration 46, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2392} INFO -  at 7.7s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:38] {2219} INFO - iteration 47, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2392} INFO -  at 7.9s,\testimator extra_tree's best error=0.1555,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2219} INFO - iteration 48, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2392} INFO -  at 8.1s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2219} INFO - iteration 49, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2392} INFO -  at 8.2s,\testimator xgboost's best error=0.1613,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2219} INFO - iteration 50, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2392} INFO -  at 8.3s,\testimator extra_tree's best error=0.1555,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2219} INFO - iteration 51, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2392} INFO -  at 8.6s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2219} INFO - iteration 52, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2392} INFO -  at 8.7s,\testimator rf's best error=0.1603,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:39] {2219} INFO - iteration 53, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2392} INFO -  at 8.8s,\testimator rf's best error=0.1603,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2219} INFO - iteration 54, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2392} INFO -  at 8.9s,\testimator lgbm's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2219} INFO - iteration 55, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2392} INFO -  at 9.2s,\testimator rf's best error=0.1574,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2219} INFO - iteration 56, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2392} INFO -  at 9.5s,\testimator rf's best error=0.1574,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2219} INFO - iteration 57, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2392} INFO -  at 9.7s,\testimator rf's best error=0.1574,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:40] {2219} INFO - iteration 58, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:55:41] {2392} INFO -  at 9.9s,\testimator extra_tree's best error=0.1546,\tbest estimator lgbm's best error=0.1546\n",
      "[flaml.automl.logger: 05-15 10:55:41] {2628} INFO - retrain lgbm for 0.0s\n",
      "[flaml.automl.logger: 05-15 10:55:41] {2631} INFO - retrained model: LGBMClassifier(learning_rate=0.2062320308584427, max_bin=511,\n",
      "               min_child_samples=22, n_estimators=1, n_jobs=-1, num_leaves=4,\n",
      "               reg_alpha=0.0036692592158626405, reg_lambda=0.5388507552972941,\n",
      "               verbose=-1)\n",
      "[flaml.automl.logger: 05-15 10:55:41] {1931} INFO - fit succeeded\n",
      "[flaml.automl.logger: 05-15 10:55:41] {1932} INFO - Time taken to find the best model: 0.9349913597106934\n",
      "最好的机器学习模型: lgbm\n",
      "最佳超参数配置: {'n_estimators': 47, 'num_leaves': 4, 'min_child_samples': 22, 'learning_rate': 0.2062320308584427, 'log_max_bin': 9, 'colsample_bytree': 1.0, 'reg_alpha': 0.0036692592158626405, 'reg_lambda': 0.5388507552972941}\n",
      "验证数据的最佳准确性: 0.8454\n",
      "accuracy = 0.8835341365461847\n"
     ]
    }
   ],
   "source": [
    "from flaml import AutoML\n",
    "from sklearn.model_selection import train_test_split\n",
    "import pandas as pd\n",
    "\n",
    "file_path = '训练数据.xlsx'\n",
    "data = pd.read_excel(file_path)\n",
    "\n",
    "\n",
    "X = data.iloc[:, :8]  \n",
    "y = data.iloc[:, 11]  \n",
    "\n",
    "# Splitting the dataset into training and testing sets (70% training, 30% testing)\n",
    "X_train, X_test, y_train, y_test2 = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "# Display the shape of the training and testing sets\n",
    "X_train.shape, X_test.shape, y_train.shape, y_test2.shape\n",
    "\n",
    "\n",
    "# 下面我们直接运行 FLAML automl 全自动模式，\n",
    "# 实际在运行配置中，我们可以指定 任务类型、时间预算、误差度量、学习者列表、是否下采样、重采样策略类型等。\n",
    "# 如果不作任何设定的话，所有这些参数都会使用默认值(例如，默认分类器是 [lgbm, xgboost, xgb_limitdepth, catboost, rf, extra_tree, lrl1])。\n",
    "automl = AutoML()\n",
    "# 参数设定\n",
    "settings = {\n",
    "    \"time_budget\": 10,  # 总时间上限(单位秒)\n",
    "    \"metric\": 'accuracy',  \n",
    "    \"estimator_list\": ['lgbm', 'rf', 'xgboost', 'extra_tree'],   # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
    "    \"task\": 'classification',  # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree', 'xgb_limitdepth', 'lrl1']\n",
    "    \"seed\": 100,    # 随机种子\n",
    "}\n",
    "# 运行自动化机器学习\n",
    "automl.fit(X_train=X_train, y_train=y_train, **settings)\n",
    "# 输出结果\n",
    "print('最好的机器学习模型:', automl.best_estimator)\n",
    "print('最佳超参数配置:', automl.best_config)\n",
    "print('验证数据的最佳准确性: {0:.4g}'.format(1-automl.best_loss))\n",
    "# print('最佳运行的训练时间: {0:.4g} s'.format(automl.best_config_train_time))\n",
    "\n",
    "## 对测试集进行预估\n",
    "y_pred2 = automl.predict(X_test)\n",
    "# print('Predicted labels', y_pred)\n",
    "# print('True labels', y_test)\n",
    "y_pred_proba = automl.predict_proba(X_test)[:,1]  # 测试集概率\n",
    "y_proba = automl.predict_proba(X_test)  # 测试集标签+概率\n",
    "# print(y_proba)\n",
    "\n",
    "## 测试集效果评估\n",
    "from flaml.ml import sklearn_metric_loss_score\n",
    "print('accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred2, y_test2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a2c36362",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e94fc043",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Xie_PQ\\AppData\\Roaming\\Python\\Python311\\site-packages\\sklearn\\model_selection\\_split.py:700: UserWarning: The least populated class in y has only 1 members, which is less than n_splits=5.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "image/png": "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W2/Fnj172qpZ3qVW1yyJLy317bUQQgghAcKnAWjlypWYMWMGZs6ciR49emDVqlVITU3FmjVrPJ6/bt063H333Zg8eTIyMjJw2223YcaMGXjmmWec56xatQqjR4/Ggw8+iO7du+PBBx/E9ddfj1WrVrVRq1qBshLs/HnAYvHttRBCCCEBwGdzgOx2O/bt24fFixe7HR8zZgx2797t8TE2m61O1UeDwYAffvgBgiBAo9Hgu+++w3333ed2ztixYxsMQDabDTabzfm5pTpkCIIAQRCa06zGORzyxqei2OR9vwRRlP9UqYD8fHkozIs7Nbdnyvff6z8HP0BtD662C4IAxphzN3LGWKM7nQcaf2j7W2+9hYULFzo3PF22bBn+7//+D/v376/3MdOnT0dJSUmD0zGa0vamPI+/as7PXpIkMMYgCIJzmxFFc14zfBaAioqKIIoi4uPj3Y7Hx8ejoKDA42PGjh2Lf//735g0aRL69euHffv24T//+Q8EQUBRURESExNRUFDQrOcEgKeeegrLli2rc3zr1q0wtqOgkaPslvzbb769EB8I5sqs1PbgoFarkZCQgIqKCmi1WpSVlbX4uURJxHfnvkNBRQESQhIwJGkIeFXrboVx/vx5rFixAlu3boXZbEZMTAx69+6Ne+65ByNGjGjWc11O21ub1WoFY8z5i/KsWbPw17/+1fm5J4IgwOFwNHiOoqysDHl5eejbty927NiB3r17O+9bvnw5ADTpefxVU372drsdVVVV2LFjBxy1SsVUVlY2+Wv5fBUYV6sXhDFW55ji4YcfRkFBAa6++mowxhAfH49p06bh2WefdUuBzXlOAHjwwQexcOFC5+cWiwWpqakYM2aM9/cCq6oCTp+WV3g1owco59AhjO7bFxqel5fHGwzyHj8BXihREATk5ORg9OjRQbMnlILaHlxtt1qtOHPmDEJCQiAIAsLCwhp83arPliNbcN8X9+Fs2VnnsZSwFLww9gXc3KN1NkM9deoURo4ciYiICDz77LPo06cPBEHA1q1b8Y9//AOHDx/2+Dil517BGENZWVmL294W9Ho9OI5zvjc05T1Co9FArVY3eK5r20NDQwEAISEhbo/x+vtRO2C326HVapv1s7darTAYDBg+fLjHvcCajPmIzWZjPM+zLVu2uB2fN28eGz58eIOPtdvt7MyZM8zhcLDVq1ez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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scikitplot as skplt\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "skplt.estimators.plot_learning_curve(automl.model, X_train, y_train) \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "04dc9312",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:56:13] {1680} INFO - task = classification\n",
      "[flaml.automl.logger: 05-15 10:56:13] {1691} INFO - Evaluation method: cv\n",
      "[flaml.automl.logger: 05-15 10:56:13] {1789} INFO - Minimizing error metric: 1-accuracy\n",
      "[flaml.automl.logger: 05-15 10:56:13] {1901} INFO - List of ML learners in AutoML Run: ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2219} INFO - iteration 0, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2345} INFO - Estimated sufficient time budget=467s. Estimated necessary time budget=0s.\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2219} INFO - iteration 1, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2392} INFO -  at 0.2s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2219} INFO - iteration 2, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2392} INFO -  at 0.2s,\testimator xgboost's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2219} INFO - iteration 3, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2392} INFO -  at 0.4s,\testimator xgboost's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:13] {2219} INFO - iteration 4, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 0.5s,\testimator extra_tree's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 5, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 0.5s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 6, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 0.7s,\testimator rf's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 7, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 0.9s,\testimator rf's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 8, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 1.0s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 9, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 1.1s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 10, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 1.2s,\testimator rf's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 11, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 1.3s,\testimator xgboost's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 12, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 1.3s,\testimator xgboost's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 13, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2392} INFO -  at 1.4s,\testimator xgboost's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:14] {2219} INFO - iteration 14, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 1.5s,\testimator xgboost's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 15, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 1.8s,\testimator extra_tree's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 16, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 1.9s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 17, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 2.0s,\testimator extra_tree's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 18, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 2.0s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 19, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 2.1s,\testimator xgboost's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 20, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 2.3s,\testimator rf's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 21, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 2.4s,\testimator xgboost's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 22, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2392} INFO -  at 2.4s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:15] {2219} INFO - iteration 23, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 2.5s,\testimator lgbm's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 24, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 2.6s,\testimator extra_tree's best error=0.1675,\tbest estimator lgbm's best error=0.1675\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 25, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 2.7s,\testimator extra_tree's best error=0.1665,\tbest estimator extra_tree's best error=0.1665\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 26, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 2.9s,\testimator rf's best error=0.1665,\tbest estimator extra_tree's best error=0.1665\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 27, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 2.9s,\testimator xgboost's best error=0.1655,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 28, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 3.1s,\testimator extra_tree's best error=0.1665,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 29, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 3.2s,\testimator extra_tree's best error=0.1665,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 30, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 3.2s,\testimator lgbm's best error=0.1675,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 31, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 3.3s,\testimator lgbm's best error=0.1675,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 32, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2392} INFO -  at 3.3s,\testimator lgbm's best error=0.1675,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:16] {2219} INFO - iteration 33, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2392} INFO -  at 3.5s,\testimator extra_tree's best error=0.1665,\tbest estimator xgboost's best error=0.1655\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:56:17] {2219} INFO - iteration 34, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2392} INFO -  at 3.5s,\testimator lgbm's best error=0.1675,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2219} INFO - iteration 35, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2392} INFO -  at 3.7s,\testimator rf's best error=0.1655,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2219} INFO - iteration 36, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2392} INFO -  at 3.8s,\testimator extra_tree's best error=0.1665,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2219} INFO - iteration 37, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2392} INFO -  at 4.0s,\testimator rf's best error=0.1655,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2219} INFO - iteration 38, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2392} INFO -  at 4.2s,\testimator rf's best error=0.1655,\tbest estimator xgboost's best error=0.1655\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2219} INFO - iteration 39, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2392} INFO -  at 4.3s,\testimator rf's best error=0.1598,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2219} INFO - iteration 40, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2392} INFO -  at 4.4s,\testimator rf's best error=0.1598,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:17] {2219} INFO - iteration 41, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2392} INFO -  at 4.5s,\testimator rf's best error=0.1598,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2219} INFO - iteration 42, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2392} INFO -  at 4.6s,\testimator lgbm's best error=0.1675,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2219} INFO - iteration 43, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2392} INFO -  at 4.8s,\testimator rf's best error=0.1598,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2219} INFO - iteration 44, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2392} INFO -  at 4.9s,\testimator extra_tree's best error=0.1655,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2219} INFO - iteration 45, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2392} INFO -  at 5.1s,\testimator rf's best error=0.1598,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2219} INFO - iteration 46, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2392} INFO -  at 5.1s,\testimator lgbm's best error=0.1675,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2219} INFO - iteration 47, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2392} INFO -  at 5.2s,\testimator rf's best error=0.1598,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2219} INFO - iteration 48, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2392} INFO -  at 5.3s,\testimator lgbm's best error=0.1675,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:18] {2219} INFO - iteration 49, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 5.5s,\testimator rf's best error=0.1598,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 50, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 5.6s,\testimator xgboost's best error=0.1655,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 51, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 5.7s,\testimator lgbm's best error=0.1675,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 52, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 5.7s,\testimator lgbm's best error=0.1646,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 53, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 5.8s,\testimator lgbm's best error=0.1646,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 54, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 5.9s,\testimator lgbm's best error=0.1646,\tbest estimator rf's best error=0.1598\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 55, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 6.1s,\testimator rf's best error=0.1588,\tbest estimator rf's best error=0.1588\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 56, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 6.2s,\testimator rf's best error=0.1588,\tbest estimator rf's best error=0.1588\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 57, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2392} INFO -  at 6.4s,\testimator rf's best error=0.1588,\tbest estimator rf's best error=0.1588\n",
      "[flaml.automl.logger: 05-15 10:56:19] {2219} INFO - iteration 58, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2392} INFO -  at 6.7s,\testimator rf's best error=0.1588,\tbest estimator rf's best error=0.1588\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2219} INFO - iteration 59, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2392} INFO -  at 6.7s,\testimator lgbm's best error=0.1646,\tbest estimator rf's best error=0.1588\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2219} INFO - iteration 60, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2392} INFO -  at 6.9s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2219} INFO - iteration 61, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2392} INFO -  at 7.2s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2219} INFO - iteration 62, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2392} INFO -  at 7.3s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:20] {2219} INFO - iteration 63, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2392} INFO -  at 7.6s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2219} INFO - iteration 64, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2392} INFO -  at 7.7s,\testimator lgbm's best error=0.1627,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2219} INFO - iteration 65, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2392} INFO -  at 8.0s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2219} INFO - iteration 66, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2392} INFO -  at 8.1s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2219} INFO - iteration 67, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2392} INFO -  at 8.5s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:21] {2219} INFO - iteration 68, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2392} INFO -  at 8.6s,\testimator lgbm's best error=0.1627,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2219} INFO - iteration 69, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2392} INFO -  at 8.7s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2219} INFO - iteration 70, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2392} INFO -  at 9.0s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:56:22] {2219} INFO - iteration 71, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2392} INFO -  at 9.1s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2219} INFO - iteration 72, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2392} INFO -  at 9.2s,\testimator extra_tree's best error=0.1655,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2219} INFO - iteration 73, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2392} INFO -  at 9.3s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2219} INFO - iteration 74, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2392} INFO -  at 9.4s,\testimator xgboost's best error=0.1655,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2219} INFO - iteration 75, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:22] {2392} INFO -  at 9.5s,\testimator lgbm's best error=0.1627,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2219} INFO - iteration 76, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2392} INFO -  at 9.5s,\testimator lgbm's best error=0.1627,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2219} INFO - iteration 77, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2392} INFO -  at 9.6s,\testimator xgboost's best error=0.1655,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2219} INFO - iteration 78, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2392} INFO -  at 9.9s,\testimator rf's best error=0.1578,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2219} INFO - iteration 79, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2392} INFO -  at 10.0s,\testimator xgboost's best error=0.1655,\tbest estimator rf's best error=0.1578\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2628} INFO - retrain rf for 0.1s\n",
      "[flaml.automl.logger: 05-15 10:56:23] {2631} INFO - retrained model: RandomForestClassifier(criterion='entropy', max_features=0.9720729085441333,\n",
      "                       max_leaf_nodes=23, n_estimators=8, n_jobs=-1,\n",
      "                       random_state=12032022)\n",
      "[flaml.automl.logger: 05-15 10:56:23] {1931} INFO - fit succeeded\n",
      "[flaml.automl.logger: 05-15 10:56:23] {1932} INFO - Time taken to find the best model: 9.099976778030396\n",
      "最好的机器学习模型: rf\n",
      "最佳超参数配置: {'n_estimators': 8, 'max_features': 0.9720729085441333, 'max_leaves': 23, 'criterion': 'entropy'}\n",
      "验证数据的最佳准确性: 0.8422\n",
      "accuracy = 0.9196787148594378\n"
     ]
    }
   ],
   "source": [
    "from flaml import AutoML\n",
    "from sklearn.model_selection import train_test_split\n",
    "import pandas as pd\n",
    "\n",
    "file_path = '训练数据.xlsx'\n",
    "data = pd.read_excel(file_path)\n",
    "\n",
    "\n",
    "X = data.iloc[:, :8]  \n",
    "y = data.iloc[:, 12]  \n",
    "\n",
    "# Splitting the dataset into training and testing sets (70% training, 30% testing)\n",
    "X_train, X_test, y_train, y_test3 = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "# Display the shape of the training and testing sets\n",
    "X_train.shape, X_test.shape, y_train.shape, y_test3.shape\n",
    "\n",
    "\n",
    "# 下面我们直接运行 FLAML automl 全自动模式，\n",
    "# 实际在运行配置中，我们可以指定 任务类型、时间预算、误差度量、学习者列表、是否下采样、重采样策略类型等。\n",
    "# 如果不作任何设定的话，所有这些参数都会使用默认值(例如，默认分类器是 [lgbm, xgboost, xgb_limitdepth, catboost, rf, extra_tree, lrl1])。\n",
    "automl = AutoML()\n",
    "# 参数设定\n",
    "settings = {\n",
    "    \"time_budget\": 10,  # 总时间上限(单位秒)\n",
    "    \"metric\": 'accuracy',  \n",
    "    \"estimator_list\": ['lgbm', 'rf', 'xgboost', 'extra_tree'],   # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
    "    \"task\": 'classification',  # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree', 'xgb_limitdepth', 'lrl1']\n",
    "    \"seed\": 100,    # 随机种子\n",
    "}\n",
    "# 运行自动化机器学习\n",
    "automl.fit(X_train=X_train, y_train=y_train, **settings)\n",
    "# 输出结果\n",
    "print('最好的机器学习模型:', automl.best_estimator)\n",
    "print('最佳超参数配置:', automl.best_config)\n",
    "print('验证数据的最佳准确性: {0:.4g}'.format(1-automl.best_loss))\n",
    "# print('最佳运行的训练时间: {0:.4g} s'.format(automl.best_config_train_time))\n",
    "\n",
    "## 对测试集进行预估\n",
    "y_pred3 = automl.predict(X_test)\n",
    "# print('Predicted labels', y_pred)\n",
    "# print('True labels', y_test)\n",
    "y_pred_proba = automl.predict_proba(X_test)[:,1]  # 测试集概率\n",
    "y_proba = automl.predict_proba(X_test)  # 测试集标签+概率\n",
    "# print(y_proba)\n",
    "\n",
    "## 测试集效果评估\n",
    "from flaml.ml import sklearn_metric_loss_score\n",
    "print('accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred3, y_test3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "21b7048f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:57:02] {1680} INFO - task = classification\n",
      "[flaml.automl.logger: 05-15 10:57:02] {1691} INFO - Evaluation method: cv\n",
      "[flaml.automl.logger: 05-15 10:57:02] {1789} INFO - Minimizing error metric: 1-accuracy\n",
      "[flaml.automl.logger: 05-15 10:57:02] {1901} INFO - List of ML learners in AutoML Run: ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2219} INFO - iteration 0, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2345} INFO - Estimated sufficient time budget=456s. Estimated necessary time budget=0s.\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2219} INFO - iteration 1, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2219} INFO - iteration 2, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2392} INFO -  at 0.2s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2219} INFO - iteration 3, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2392} INFO -  at 0.3s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2219} INFO - iteration 4, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2392} INFO -  at 0.4s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:02] {2219} INFO - iteration 5, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 0.5s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 6, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 0.6s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 7, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 0.9s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 8, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 0.9s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 9, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 1.0s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 10, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 1.1s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 11, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 1.2s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 12, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 1.3s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 13, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2392} INFO -  at 1.3s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:03] {2219} INFO - iteration 14, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 1.5s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 15, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 1.6s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 16, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 1.7s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 17, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 1.8s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 18, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 1.9s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 19, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 1.9s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 20, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 2.1s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 21, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 2.1s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 22, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 2.2s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 23, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2392} INFO -  at 2.2s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:04] {2219} INFO - iteration 24, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 2.4s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 25, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 2.5s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 26, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 2.6s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 27, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 2.7s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 28, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 2.8s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 29, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 3.0s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 30, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 3.0s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 31, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 3.1s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 32, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 3.1s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 33, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 3.3s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 34, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2392} INFO -  at 3.3s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:05] {2219} INFO - iteration 35, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 3.4s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 36, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 3.6s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 37, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 3.9s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 38, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 3.9s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 39, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 4.0s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 40, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 4.1s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 41, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 4.2s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 42, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 4.3s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 43, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2392} INFO -  at 4.3s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:06] {2219} INFO - iteration 44, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 4.4s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 45, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 4.5s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 46, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 4.5s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 47, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 4.6s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 48, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 4.7s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 49, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 4.9s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 50, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 5.0s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 51, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 5.0s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 52, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 5.1s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 53, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 5.1s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 54, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 5.2s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 55, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 5.2s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 56, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 5.3s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 57, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2392} INFO -  at 5.4s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:07] {2219} INFO - iteration 58, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 5.5s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 59, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 5.5s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 60, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 5.6s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 61, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 5.6s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 62, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 5.7s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 63, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 5.8s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 64, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 5.8s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 65, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 6.0s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 66, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 6.0s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 67, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 6.2s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 68, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 6.2s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 69, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 6.3s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 70, current learner xgboost\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:57:08] {2392} INFO -  at 6.4s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:08] {2219} INFO - iteration 71, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 6.4s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 72, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 6.6s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 73, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 6.6s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 74, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 6.8s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 75, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 6.8s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 76, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 6.9s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 77, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 7.1s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 78, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 7.2s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 79, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2392} INFO -  at 7.2s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:09] {2219} INFO - iteration 80, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 7.4s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 81, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 7.5s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 82, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 7.6s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 83, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 7.6s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 84, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 7.8s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 85, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 7.8s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 86, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 7.9s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 87, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 8.1s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 88, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 8.2s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 89, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2392} INFO -  at 8.3s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:10] {2219} INFO - iteration 90, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2392} INFO -  at 8.4s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2219} INFO - iteration 91, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2392} INFO -  at 8.6s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2219} INFO - iteration 92, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2392} INFO -  at 8.7s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2219} INFO - iteration 93, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2392} INFO -  at 8.8s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2219} INFO - iteration 94, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2392} INFO -  at 8.8s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2219} INFO - iteration 95, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2392} INFO -  at 9.0s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2219} INFO - iteration 96, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2392} INFO -  at 9.2s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2219} INFO - iteration 97, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2392} INFO -  at 9.2s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:11] {2219} INFO - iteration 98, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 9.4s,\testimator rf's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2219} INFO - iteration 99, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 9.4s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2219} INFO - iteration 100, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 9.7s,\testimator extra_tree's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2219} INFO - iteration 101, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 9.7s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2219} INFO - iteration 102, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 9.8s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2219} INFO - iteration 103, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 9.8s,\testimator xgboost's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2219} INFO - iteration 104, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 9.9s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2219} INFO - iteration 105, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 9.9s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2219} INFO - iteration 106, current learner lgbm\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:57:12] {2392} INFO -  at 10.0s,\testimator lgbm's best error=0.1296,\tbest estimator lgbm's best error=0.1296\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2628} INFO - retrain lgbm for 0.0s\n",
      "[flaml.automl.logger: 05-15 10:57:12] {2631} INFO - retrained model: LGBMClassifier(learning_rate=0.09999999999999995, max_bin=255, n_estimators=1,\n",
      "               n_jobs=-1, num_leaves=4, reg_alpha=0.0009765625, reg_lambda=1.0,\n",
      "               verbose=-1)\n",
      "[flaml.automl.logger: 05-15 10:57:12] {1931} INFO - fit succeeded\n",
      "[flaml.automl.logger: 05-15 10:57:12] {1932} INFO - Time taken to find the best model: 0.0636436939239502\n",
      "最好的机器学习模型: lgbm\n",
      "最佳超参数配置: {'n_estimators': 4, 'num_leaves': 4, 'min_child_samples': 20, 'learning_rate': 0.09999999999999995, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}\n",
      "验证数据的最佳准确性: 0.8704\n",
      "accuracy = 0.8835341365461847\n"
     ]
    }
   ],
   "source": [
    "from flaml import AutoML\n",
    "from sklearn.model_selection import train_test_split\n",
    "import pandas as pd\n",
    "\n",
    "file_path = '训练数据.xlsx'\n",
    "data = pd.read_excel(file_path)\n",
    "\n",
    "\n",
    "X = data.iloc[:, :8]  \n",
    "y = data.iloc[:, 13]  \n",
    "\n",
    "# Splitting the dataset into training and testing sets (70% training, 30% testing)\n",
    "X_train, X_test, y_train, y_test4 = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "# Display the shape of the training and testing sets\n",
    "X_train.shape, X_test.shape, y_train.shape, y_test4.shape\n",
    "\n",
    "\n",
    "# 下面我们直接运行 FLAML automl 全自动模式，\n",
    "# 实际在运行配置中，我们可以指定 任务类型、时间预算、误差度量、学习者列表、是否下采样、重采样策略类型等。\n",
    "# 如果不作任何设定的话，所有这些参数都会使用默认值(例如，默认分类器是 [lgbm, xgboost, xgb_limitdepth, catboost, rf, extra_tree, lrl1])。\n",
    "automl = AutoML()\n",
    "# 参数设定\n",
    "settings = {\n",
    "    \"time_budget\": 10,  # 总时间上限(单位秒)\n",
    "    \"metric\": 'accuracy',  \n",
    "    \"estimator_list\": ['lgbm', 'rf', 'xgboost', 'extra_tree'],   # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
    "    \"task\": 'classification',  # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree', 'xgb_limitdepth', 'lrl1']\n",
    "    \"seed\": 100,    # 随机种子\n",
    "}\n",
    "# 运行自动化机器学习\n",
    "automl.fit(X_train=X_train, y_train=y_train, **settings)\n",
    "# 输出结果\n",
    "print('最好的机器学习模型:', automl.best_estimator)\n",
    "print('最佳超参数配置:', automl.best_config)\n",
    "print('验证数据的最佳准确性: {0:.4g}'.format(1-automl.best_loss))\n",
    "# print('最佳运行的训练时间: {0:.4g} s'.format(automl.best_config_train_time))\n",
    "\n",
    "## 对测试集进行预估\n",
    "y_pred4 = automl.predict(X_test)\n",
    "# print('Predicted labels', y_pred)\n",
    "# print('True labels', y_test)\n",
    "y_pred_proba = automl.predict_proba(X_test)[:,1]  # 测试集概率\n",
    "y_proba = automl.predict_proba(X_test)  # 测试集标签+概率\n",
    "# print(y_proba)\n",
    "\n",
    "## 测试集效果评估\n",
    "from flaml.ml import sklearn_metric_loss_score\n",
    "print('accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred4, y_test4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "fd80f515",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:57:41] {1680} INFO - task = classification\n",
      "[flaml.automl.logger: 05-15 10:57:41] {1691} INFO - Evaluation method: cv\n",
      "[flaml.automl.logger: 05-15 10:57:41] {1789} INFO - Minimizing error metric: 1-accuracy\n",
      "[flaml.automl.logger: 05-15 10:57:41] {1901} INFO - List of ML learners in AutoML Run: ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2219} INFO - iteration 0, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2345} INFO - Estimated sufficient time budget=440s. Estimated necessary time budget=0s.\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.1118,\tbest estimator lgbm's best error=0.1118\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2219} INFO - iteration 1, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.1118,\tbest estimator lgbm's best error=0.1118\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2219} INFO - iteration 2, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2392} INFO -  at 0.2s,\testimator xgboost's best error=0.1098,\tbest estimator xgboost's best error=0.1098\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2219} INFO - iteration 3, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2392} INFO -  at 0.3s,\testimator xgboost's best error=0.1039,\tbest estimator xgboost's best error=0.1039\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2219} INFO - iteration 4, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2392} INFO -  at 0.4s,\testimator lgbm's best error=0.1118,\tbest estimator xgboost's best error=0.1039\n",
      "[flaml.automl.logger: 05-15 10:57:41] {2219} INFO - iteration 5, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 0.5s,\testimator extra_tree's best error=0.1118,\tbest estimator xgboost's best error=0.1039\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 6, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 0.6s,\testimator rf's best error=0.1118,\tbest estimator xgboost's best error=0.1039\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 7, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 0.8s,\testimator rf's best error=0.1098,\tbest estimator xgboost's best error=0.1039\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 8, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 0.8s,\testimator lgbm's best error=0.1118,\tbest estimator xgboost's best error=0.1039\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 9, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 0.9s,\testimator lgbm's best error=0.1019,\tbest estimator lgbm's best error=0.1019\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 10, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 1.0s,\testimator lgbm's best error=0.0999,\tbest estimator lgbm's best error=0.0999\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 11, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 1.1s,\testimator lgbm's best error=0.0999,\tbest estimator lgbm's best error=0.0999\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 12, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 1.2s,\testimator lgbm's best error=0.0999,\tbest estimator lgbm's best error=0.0999\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 13, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 1.2s,\testimator xgboost's best error=0.1039,\tbest estimator lgbm's best error=0.0999\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 14, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2392} INFO -  at 1.4s,\testimator xgboost's best error=0.0989,\tbest estimator xgboost's best error=0.0989\n",
      "[flaml.automl.logger: 05-15 10:57:42] {2219} INFO - iteration 15, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2392} INFO -  at 1.7s,\testimator extra_tree's best error=0.1078,\tbest estimator xgboost's best error=0.0989\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2219} INFO - iteration 16, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2392} INFO -  at 1.8s,\testimator lgbm's best error=0.0999,\tbest estimator xgboost's best error=0.0989\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2219} INFO - iteration 17, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2392} INFO -  at 1.9s,\testimator xgboost's best error=0.0989,\tbest estimator xgboost's best error=0.0989\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2219} INFO - iteration 18, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2392} INFO -  at 1.9s,\testimator lgbm's best error=0.0999,\tbest estimator xgboost's best error=0.0989\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2219} INFO - iteration 19, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2392} INFO -  at 2.4s,\testimator xgboost's best error=0.0959,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:43] {2219} INFO - iteration 20, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2392} INFO -  at 2.5s,\testimator xgboost's best error=0.0959,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2219} INFO - iteration 21, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2392} INFO -  at 3.1s,\testimator xgboost's best error=0.0959,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2219} INFO - iteration 22, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2392} INFO -  at 3.2s,\testimator lgbm's best error=0.0999,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2219} INFO - iteration 23, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2392} INFO -  at 3.3s,\testimator rf's best error=0.1098,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2219} INFO - iteration 24, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2392} INFO -  at 3.4s,\testimator extra_tree's best error=0.1078,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:44] {2219} INFO - iteration 25, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:45] {2392} INFO -  at 3.6s,\testimator extra_tree's best error=0.1078,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:45] {2219} INFO - iteration 26, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:45] {2392} INFO -  at 3.8s,\testimator xgboost's best error=0.0959,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:45] {2219} INFO - iteration 27, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:45] {2392} INFO -  at 4.2s,\testimator xgboost's best error=0.0959,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:45] {2219} INFO - iteration 28, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:45] {2392} INFO -  at 4.4s,\testimator extra_tree's best error=0.1039,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:45] {2219} INFO - iteration 29, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2392} INFO -  at 4.5s,\testimator extra_tree's best error=0.0989,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2219} INFO - iteration 30, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2392} INFO -  at 4.9s,\testimator xgboost's best error=0.0959,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2219} INFO - iteration 31, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2392} INFO -  at 4.9s,\testimator lgbm's best error=0.0999,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2219} INFO - iteration 32, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2392} INFO -  at 5.1s,\testimator extra_tree's best error=0.0989,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2219} INFO - iteration 33, current learner extra_tree\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:57:46] {2392} INFO -  at 5.2s,\testimator extra_tree's best error=0.0989,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2219} INFO - iteration 34, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2392} INFO -  at 5.4s,\testimator lgbm's best error=0.0979,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:46] {2219} INFO - iteration 35, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2392} INFO -  at 5.7s,\testimator xgboost's best error=0.0959,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2219} INFO - iteration 36, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2392} INFO -  at 5.8s,\testimator extra_tree's best error=0.0989,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2219} INFO - iteration 37, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2392} INFO -  at 6.0s,\testimator extra_tree's best error=0.0989,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2219} INFO - iteration 38, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2392} INFO -  at 6.0s,\testimator extra_tree's best error=0.0989,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2219} INFO - iteration 39, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2392} INFO -  at 6.3s,\testimator rf's best error=0.1098,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:47] {2219} INFO - iteration 40, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2392} INFO -  at 6.5s,\testimator extra_tree's best error=0.0989,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2219} INFO - iteration 41, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2392} INFO -  at 6.6s,\testimator extra_tree's best error=0.0969,\tbest estimator xgboost's best error=0.0959\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2219} INFO - iteration 42, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2392} INFO -  at 7.0s,\testimator lgbm's best error=0.0950,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2219} INFO - iteration 43, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2392} INFO -  at 7.3s,\testimator lgbm's best error=0.0950,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2219} INFO - iteration 44, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2392} INFO -  at 7.4s,\testimator extra_tree's best error=0.0969,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:48] {2219} INFO - iteration 45, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:49] {2392} INFO -  at 7.9s,\testimator lgbm's best error=0.0950,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:49] {2219} INFO - iteration 46, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:49] {2392} INFO -  at 8.5s,\testimator lgbm's best error=0.0950,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:49] {2219} INFO - iteration 47, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:50] {2392} INFO -  at 8.6s,\testimator extra_tree's best error=0.0969,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:50] {2219} INFO - iteration 48, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:50] {2392} INFO -  at 8.8s,\testimator lgbm's best error=0.0950,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:50] {2219} INFO - iteration 49, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:50] {2392} INFO -  at 9.1s,\testimator lgbm's best error=0.0950,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:50] {2219} INFO - iteration 50, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:50] {2392} INFO -  at 9.2s,\testimator extra_tree's best error=0.0969,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:50] {2219} INFO - iteration 51, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:57:51] {2392} INFO -  at 9.7s,\testimator lgbm's best error=0.0950,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:51] {2219} INFO - iteration 52, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:57:51] {2392} INFO -  at 9.9s,\testimator extra_tree's best error=0.0969,\tbest estimator lgbm's best error=0.0950\n",
      "[flaml.automl.logger: 05-15 10:57:51] {2628} INFO - retrain lgbm for 0.1s\n",
      "[flaml.automl.logger: 05-15 10:57:51] {2631} INFO - retrained model: LGBMClassifier(colsample_bytree=0.9503797621699147,\n",
      "               learning_rate=0.16136821490678374, max_bin=127,\n",
      "               min_child_samples=47, n_estimators=1, n_jobs=-1, num_leaves=5,\n",
      "               reg_alpha=0.002338340915649684, reg_lambda=0.10727500507883668,\n",
      "               verbose=-1)\n",
      "[flaml.automl.logger: 05-15 10:57:51] {1931} INFO - fit succeeded\n",
      "[flaml.automl.logger: 05-15 10:57:51] {1932} INFO - Time taken to find the best model: 6.962153196334839\n",
      "最好的机器学习模型: lgbm\n",
      "最佳超参数配置: {'n_estimators': 108, 'num_leaves': 5, 'min_child_samples': 47, 'learning_rate': 0.16136821490678374, 'log_max_bin': 7, 'colsample_bytree': 0.9503797621699147, 'reg_alpha': 0.002338340915649684, 'reg_lambda': 0.10727500507883668}\n",
      "验证数据的最佳准确性: 0.905\n",
      "accuracy = 0.9116465863453815\n"
     ]
    }
   ],
   "source": [
    "from flaml import AutoML\n",
    "from sklearn.model_selection import train_test_split\n",
    "import pandas as pd\n",
    "\n",
    "file_path = '训练数据.xlsx'\n",
    "data = pd.read_excel(file_path)\n",
    "\n",
    "\n",
    "X = data.iloc[:, :8]  \n",
    "y = data.iloc[:, 14]  \n",
    "\n",
    "# Splitting the dataset into training and testing sets (70% training, 30% testing)\n",
    "X_train, X_test, y_train, y_test5 = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "# Display the shape of the training and testing sets\n",
    "X_train.shape, X_test.shape, y_train.shape, y_test5.shape\n",
    "\n",
    "\n",
    "# 下面我们直接运行 FLAML automl 全自动模式，\n",
    "# 实际在运行配置中，我们可以指定 任务类型、时间预算、误差度量、学习者列表、是否下采样、重采样策略类型等。\n",
    "# 如果不作任何设定的话，所有这些参数都会使用默认值(例如，默认分类器是 [lgbm, xgboost, xgb_limitdepth, catboost, rf, extra_tree, lrl1])。\n",
    "automl = AutoML()\n",
    "# 参数设定\n",
    "settings = {\n",
    "    \"time_budget\": 10,  # 总时间上限(单位秒)\n",
    "    \"metric\": 'accuracy',  \n",
    "    \"estimator_list\": ['lgbm', 'rf', 'xgboost', 'extra_tree'],   # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
    "    \"task\": 'classification',  # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree', 'xgb_limitdepth', 'lrl1']\n",
    "    \"seed\": 100,    # 随机种子\n",
    "}\n",
    "# 运行自动化机器学习\n",
    "automl.fit(X_train=X_train, y_train=y_train, **settings)\n",
    "# 输出结果\n",
    "print('最好的机器学习模型:', automl.best_estimator)\n",
    "print('最佳超参数配置:', automl.best_config)\n",
    "print('验证数据的最佳准确性: {0:.4g}'.format(1-automl.best_loss))\n",
    "# print('最佳运行的训练时间: {0:.4g} s'.format(automl.best_config_train_time))\n",
    "\n",
    "## 对测试集进行预估\n",
    "y_pred5 = automl.predict(X_test)\n",
    "# print('Predicted labels', y_pred)\n",
    "# print('True labels', y_test)\n",
    "y_pred_proba = automl.predict_proba(X_test)[:,1]  # 测试集概率\n",
    "y_proba = automl.predict_proba(X_test)  # 测试集标签+概率\n",
    "# print(y_proba)\n",
    "\n",
    "## 测试集效果评估\n",
    "from flaml.ml import sklearn_metric_loss_score\n",
    "print('accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred5, y_test5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "06202f32",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:58:27] {1680} INFO - task = classification\n",
      "[flaml.automl.logger: 05-15 10:58:27] {1691} INFO - Evaluation method: cv\n",
      "[flaml.automl.logger: 05-15 10:58:27] {1789} INFO - Minimizing error metric: 1-accuracy\n",
      "[flaml.automl.logger: 05-15 10:58:28] {1901} INFO - List of ML learners in AutoML Run: ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 0, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2345} INFO - Estimated sufficient time budget=357s. Estimated necessary time budget=0s.\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.0s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 1, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 2, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.1s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 3, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.2s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 4, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.2s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 5, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.3s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 6, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.3s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 7, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.4s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 8, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.4s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 9, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.6s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 10, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.7s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 11, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.8s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 12, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 0.9s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 13, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2392} INFO -  at 1.0s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:28] {2219} INFO - iteration 14, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.0s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 15, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.2s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 16, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.3s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 17, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.4s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 18, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.4s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 19, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.5s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 20, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.6s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 21, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.7s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 22, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.7s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 23, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.7s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 24, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 1.9s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 25, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2392} INFO -  at 2.0s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:29] {2219} INFO - iteration 26, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.1s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 27, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.2s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 28, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.3s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 29, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.5s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 30, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.5s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 31, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.5s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 32, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.6s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 33, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.7s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 34, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.7s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 35, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.8s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 36, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 2.9s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 37, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2392} INFO -  at 3.0s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:30] {2219} INFO - iteration 38, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.0s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 39, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.1s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 40, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.2s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 41, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.2s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 42, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.3s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 43, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.3s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 44, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.5s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 45, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.5s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 46, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.6s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 47, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.6s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 48, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.7s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 49, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 3.9s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 50, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 4.0s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 51, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2392} INFO -  at 4.0s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:31] {2219} INFO - iteration 52, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.0s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 53, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.1s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 54, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.1s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 55, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.2s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 56, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.2s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 57, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.2s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 58, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.4s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 59, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.4s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 60, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.5s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 61, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.5s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 62, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.6s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 63, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.6s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 64, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.7s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 65, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.8s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 66, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 4.9s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 67, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2392} INFO -  at 5.0s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:32] {2219} INFO - iteration 68, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.0s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 69, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.1s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 70, current learner xgboost\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.1s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 71, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.3s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 72, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.4s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 73, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.5s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 74, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.6s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 75, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.6s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 76, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.7s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 77, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.8s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 78, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.9s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 79, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2392} INFO -  at 5.9s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:33] {2219} INFO - iteration 80, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.1s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 81, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.3s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 82, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.3s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 83, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.4s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 84, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.6s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 85, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.6s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 86, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.7s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 87, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.8s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 88, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 6.9s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 89, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2392} INFO -  at 7.0s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:34] {2219} INFO - iteration 90, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 7.1s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 91, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 7.2s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 92, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 7.3s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 93, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 7.3s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 94, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 7.4s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 95, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 7.6s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 96, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 7.8s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 97, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 7.8s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 98, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 8.0s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 99, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2392} INFO -  at 8.0s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:35] {2219} INFO - iteration 100, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.1s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 101, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.2s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 102, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.2s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 103, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.3s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 104, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.3s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 105, current learner rf\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.5s,\testimator rf's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 106, current learner extra_tree\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.7s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 107, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.7s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 108, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.8s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 109, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.9s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 110, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2392} INFO -  at 8.9s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:36] {2219} INFO - iteration 111, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.0s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 112, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.1s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 113, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.2s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 114, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.2s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 115, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.3s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 116, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.4s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 117, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.5s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 118, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.5s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 119, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.6s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 120, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.6s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 121, current learner extra_tree\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.8s,\testimator extra_tree's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 122, current learner xgboost\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.8s,\testimator xgboost's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 123, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.9s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 124, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.9s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 125, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 9.9s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2219} INFO - iteration 126, current learner lgbm\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2392} INFO -  at 10.0s,\testimator lgbm's best error=0.0232,\tbest estimator lgbm's best error=0.0232\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2628} INFO - retrain lgbm for 0.0s\n",
      "[flaml.automl.logger: 05-15 10:58:37] {2631} INFO - retrained model: LGBMClassifier(learning_rate=0.09999999999999995, max_bin=255, n_estimators=1,\n",
      "               n_jobs=-1, num_leaves=4, reg_alpha=0.0009765625, reg_lambda=1.0,\n",
      "               verbose=-1)\n",
      "[flaml.automl.logger: 05-15 10:58:37] {1931} INFO - fit succeeded\n",
      "[flaml.automl.logger: 05-15 10:58:37] {1932} INFO - Time taken to find the best model: 0.04866909980773926\n",
      "最好的机器学习模型: lgbm\n",
      "最佳超参数配置: {'n_estimators': 4, 'num_leaves': 4, 'min_child_samples': 20, 'learning_rate': 0.09999999999999995, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}\n",
      "验证数据的最佳准确性: 0.9768\n",
      "accuracy = 0.9678714859437751\n"
     ]
    }
   ],
   "source": [
    "from flaml import AutoML\n",
    "from sklearn.model_selection import train_test_split\n",
    "import pandas as pd\n",
    "\n",
    "file_path = '训练数据.xlsx'\n",
    "data = pd.read_excel(file_path)\n",
    "\n",
    "\n",
    "X = data.iloc[:, :8]  \n",
    "y = data.iloc[:, 15]  \n",
    "\n",
    "# Splitting the dataset into training and testing sets (70% training, 30% testing)\n",
    "X_train, X_test, y_train, y_test6 = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "# Display the shape of the training and testing sets\n",
    "X_train.shape, X_test.shape, y_train.shape, y_test6.shape\n",
    "\n",
    "\n",
    "# 下面我们直接运行 FLAML automl 全自动模式，\n",
    "# 实际在运行配置中，我们可以指定 任务类型、时间预算、误差度量、学习者列表、是否下采样、重采样策略类型等。\n",
    "# 如果不作任何设定的话，所有这些参数都会使用默认值(例如，默认分类器是 [lgbm, xgboost, xgb_limitdepth, catboost, rf, extra_tree, lrl1])。\n",
    "automl = AutoML()\n",
    "# 参数设定\n",
    "settings = {\n",
    "    \"time_budget\": 10,  # 总时间上限(单位秒)\n",
    "    \"metric\": 'accuracy',  \n",
    "    \"estimator_list\": ['lgbm', 'rf', 'xgboost', 'extra_tree'],   # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree']\n",
    "    \"task\": 'classification',  # 任务类型 # ['lgbm', 'rf', 'xgboost', 'extra_tree', 'xgb_limitdepth', 'lrl1']\n",
    "    \"seed\": 100,    # 随机种子\n",
    "}\n",
    "# 运行自动化机器学习\n",
    "automl.fit(X_train=X_train, y_train=y_train, **settings)\n",
    "# 输出结果\n",
    "print('最好的机器学习模型:', automl.best_estimator)\n",
    "print('最佳超参数配置:', automl.best_config)\n",
    "print('验证数据的最佳准确性: {0:.4g}'.format(1-automl.best_loss))\n",
    "# print('最佳运行的训练时间: {0:.4g} s'.format(automl.best_config_train_time))\n",
    "\n",
    "## 对测试集进行预估\n",
    "y_pred6 = automl.predict(X_test)\n",
    "# print('Predicted labels', y_pred)\n",
    "# print('True labels', y_test)\n",
    "y_pred_proba = automl.predict_proba(X_test)[:,1]  # 测试集概率\n",
    "y_proba = automl.predict_proba(X_test)  # 测试集标签+概率\n",
    "# print(y_proba)\n",
    "\n",
    "## 测试集效果评估\n",
    "from flaml.ml import sklearn_metric_loss_score\n",
    "print('accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred6, y_test6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e39c9c04",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
